Algorithm
lc470_用Rand7()实现Rand10()
思路
思路一
搞10次rand7(),然后除以7,这样就能 10,70
–> 1,10
但是第6个样例直接挂了…而且没有看到比8大的数
思路二
直接判断有多少个0.7,结果第7个样例挂了
官方思路
要均匀,所以均匀采样
官方链接
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public: int rand10() { int a, b, idx; while (true) { a = rand7(); b = rand7(); idx = b + (a - 1) * 7; if (idx <= 40) { return 1 + (idx - 1) % 10; } a = idx - 40; b = rand7(); idx = b + (a - 1) * 7; if (idx <= 60) { return 1 + (idx - 1) % 10; } a = idx - 60; b = rand7(); idx = b + (a - 1) * 7; if (idx <= 20) { return 1 + (idx - 1) % 10; } } } };
|
Review
【TED演讲】少数科技公司如何每天控制数亿人的思想
现在的科技软件会不断吸引我们花费时间在手机上,我们应该学会抗拒,学会把时间花在自己真正重要的事情上面
Tips
PlantUML快速指南
Share
yum报错网络不可达,但是配置的网络能够ping通