首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rand(3)生成rand(9)

使用rand(3)生成rand(9)
EN

Stack Overflow用户
提问于 2012-08-12 12:14:22
回答 2查看 1.9K关注 0票数 2

您有一个函数rand( 3 ),它生成从1到3的随机整数。使用这个函数,构造另一个函数rand( 9 ),它生成从1到9的随机整数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-13 12:21:52

使用rand(3)两次,可以生成3^2对整数,即(1,1),(1,2),...,(3,3)。将每一对赋值为1,9将为您提供rand(9)。象征性地: rand(9):=(rand(3),rand(3))。

票数 1
EN

Stack Overflow用户

发布于 2012-08-12 12:17:56

这里有一个简单的解决方案:

代码语言:javascript
复制
rand(3) + 3*(rand(3) - 1)

之所以要这样做,是因为它提供了从1到9的所有可能值的均匀分布。

有些人可能只想做rand(3) * rand(3),但这实际上并不会产生一些数字-例如7。它也不均匀地分配它所产生的数字。

类似地,有些人可能会执行rand(3) + rand(3) + rand(3),但这也不会生成所有的数字(它永远不会生成1或2),而是以不成比例的频率生成其他数字(生成5的频率比生成9的频率高得多)。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11919678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档