![](/img/trans.png)
[英]Is there a function I can use in Python to randomly select elements equal to specified number and change it to another?
[英]Randomly select 0 or 1 equal number of times?
我想迭代超过100个值并随机选择0或1,但最终得到相同数字的0和1,
下面的代码打印计数:
import random
c_true = 0
c_false = 0
for i in range(100):
a = random.getrandbits(1)
if a == 1:
c_true += 1
else:
c_false += 1
print "true_count:",c_true
print "false_count:",c_false
输出是:
true_count: 56
false_count: 44
我希望计数是平等的
true_count: 50
false_count: 50
如何更改代码以获得所需的结果?
这是一个使用O(1)内存的基于生成器的解决方案:
import random
def gen_boolean_seq(true_count, false_count):
while true_count or false_count:
val = (random.random() >= false_count / float(true_count + false_count))
if val:
true_count -= 1
else:
false_count -= 1
yield val
print sum(gen_boolean_seq(50, 50))
那么它并不是真正随机的,但是如果你想最终得到50个1和50个0,那么根据剩余的可用位数使用加权。 例如。 在40 1s和45 0s,0的概率应该是5/15,1的几率应该是10/15。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.