前言
最近发现一类算法,我称它们为无限随机算法,它们的特点是产生一个输出,这个输出有无限种可能。例如下面这个算法,它可以输出一个任意正整数n,产生n的可能为 1 2 n \frac{1}{2^n} 2n1。
底层实现原理
python实现
import random
luckNum = 1
while True:
if random.random() < 0.5:
luckNum += 1
else:
break
print(luckNum)
java实现
import java.util.Random;
public class LuckTest {
public static void main(String[] args) {
int luckNum = 1;
Random random = new Random();
while (true){
if(random.nextDouble()<0.5){
luckNum++;
}else {
break;
}
}
System.out.println(luckNum);
}
}
无限随机算法的本质
我们会发现无限随机算法的本质其实是概率+循环。
最后
我用无限随机算法做了一个微信小程序“无限抽卡器”,大家可以体验一下。