怎样用程序写出游戏寻宝随机获得物品的算法?

帮@补佳林补充一下细节。 把原序列(0.11、0.19、0.29、0.11、0.3)变换一下(累加),=\u0026gt; 0.11、0.3、0.59、0.7、1 然后随机一个0-1之间的数, \u0026lt;=0.11对应第1个 \u0026lt;=0.3对应第2个 \u0026lt;=0.59对应第3个 \u0026lt;=0.7对应第4个 else 对应第5个
■网友
产生一个0-1之间的随机数,每件物品的概率对应0-1上面等长的线段,随机数落到哪个区间就掉哪个宝。
■网友
@李陶冶的答案 再补充一点: 对于C系语言的随机数往往是整数,可以把0.11, 0.19, 0.29...扩大10000倍,然后生成的是10000以内的随机数。这样可以减小随机函数不均匀带来的误差。 上学的时候写过一个俄罗斯方块,本来应该是随机出现每种方块,结果发现随机不均匀,细棍出现的概率很高。这么调整之后概率才恢复正常的。 如果再不均匀,你可以尝试重写随机函数,把种子取模的M设置成你要的倍数,这样可以提高随机度。
■网友
用srand()和rand()产生随机数吧
■网友
把原序列(0.11、0.19、0.29、0.11、0.3)变换一下(累加),=\u0026gt; 0.11、0.3、0.59、0.7、1 然后随机一个0-1之间的数, \u0026lt;=0.11对应第1个 \u0026lt;=0.3对应第2个 \u0026lt;=0.59对应第3个 \u0026lt;=0.7对应第4个 else 对应第5个 附上一段java实现代码 public static int getRandom5Array(double array) { double random = Math.random(); double rate = 0; for (int i = 0; i \u0026lt; array.length; i++) { rate += array; if (random \u0026lt;= rate) { return i; } } return 0; }


    推荐阅读