gpt4 book ai didi

c - 如何将随机整数的范围从1-10扩大到1-200

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:00 25 4
gpt4 key购买 nike

给定一个在 1 到 10 范围内均匀生成随机整数的函数,如何编写一个在 1 到 200 范围内均匀生成随机整数的函数?

最佳答案

u()=uniform(1,10),你可以写你的新随机变量`

v() = 10*(u()-1) + u() + 100*I[u()>5]  

请注意,您需要对统一函数进行三次调用,不过第三次可以是 bool 变量。这里我用作指标函数

I[x] = x ? 1 : 0     // if x is true then 1 else 0.

代替 u()>5,您可以等效地定义 u()%2==0(u 是偶数)。您可以将 200 个不同的值视为 10 * 10 * 2,这需要对底层统一函数进行三次调用,即使第三次调用仅用作二进制值。

这是一个awk实现和直方图测试

 awk 'function u() {return int(1+rand()*10)} 
BEGIN {srand(); trials=100000;
for(i=1;i<=trials;i++) v[10*(u()-1)+u()+100*(u()%2)]++;
for(k in v) print k, v[k], (v[k]-trials/200)^2}' | sort -k3nr

最后一列表示理想分布之间的差异,总和或最大值都可以作为适应度值。有更复杂的测试、卡方等用于更复杂的分析。

关于c - 如何将随机整数的范围从1-10扩大到1-200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43056269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com