Random() * 10 + 1 产生随机数
写一个函数 Rnd(1 , 10) ,但是不能出现3,如何做才是最优的。代码
Rnd( a, b, c ) === c就是要去除的数字。
随机一个范围内的数字,但是不包含某一个数? 请问有什么办法?
一开始我是直接随机,然后判断是否一样,如果一样,再递归调用,直到不一样才返回。但是有时候会比较慢, 比如1-5随机,去除2,就会很慢。
最好的代码
...
如果我要随机 1 到 1万呢? 去除数字888 ?
也是啊,递归占用太多空间。。。
但是这样随机到一样的数,再次循环随机,对于范围小的会不好,比如1到3,去除2。会出现大量循环随机。
我想到的是: 1到10,去除7 。 就用1-6 ,8-10来随机,先随机一个数50%,选择前段还是后段,再来随机前段1-6 ,后段8-10 。但是这样会不公平。 假如按百分比来选择,前段70%后段30% 。这样选一开始就偏向前段了。
这个担心其实没必要,一个随机数加减乘除一个数还是随机数,无所谓公平不公平。
追问不好。 程序员就是要把所有可能的事,都得思考一遍。