Python 如何编写一个基于条件将整数加倍的循环
100000条卫星=0.001 btcPython 如何编写一个基于条件将整数加倍的循环,python,Python,100000条卫星=0.001 btc somethingRandom(btc): #code btc = 0.001 satoshies = btc / 0.00000001 if somethingRandom(): #double somethingRandom(btc) else: #reset somethingRandom(btc) 如果somethingRandom返回true,我希望
somethingRandom(btc):
#code
btc = 0.001
satoshies = btc / 0.00000001
if somethingRandom():
#double
somethingRandom(btc)
else:
#reset
somethingRandom(btc)
如果somethingRandom
返回true,我希望通过将btc的数量加倍,继续将satoshies的数量加倍
如果返回false,我想将btc重置为0.001
有什么想法吗?
谢谢。像这样吗
def somethingRandom():
return random.choice((True, False))
btc = 0.001
while True:
if somethingRandom():
btc *= 2
else:
btc = 0.001
satoshies = btc / 0.00000001
下面是我将如何实现随机二项(真或假)函数:
def binomial(p=.5):
'''return True with probability p, else False with probability 1-p'''
return random.random() < p
如果您喜欢使用
itertools
:
import itertools
btc *= 2**(sum(itertools.takewhile(lambda x: somethingRandom(), itertools.repeat(1))))
如果somethingRandom()连续3次返回true,则必须加倍(0.001*2)3次,因此btc的值为0.008。我相信您的代码会将btc重置为0.001,因为您在somethingRandom()之后立即将值赋值为0.001。我编辑了我的主要帖子。我的错。通过将btc作为参数添加到函数中,您正在改变问题的性质,并且您的做法不一致。你应该把你的问题回复到原来的问题。如果你认为你需要改变你的问题,我建议你需要更具体地说明你想要什么。
import itertools
btc *= 2**(sum(itertools.takewhile(lambda x: somethingRandom(), itertools.repeat(1))))