JS里生成随机值只能用Math.random吗?
javascript吧
全部回复
仅看楼主
level 8
jy03692141 楼主
感觉用Math.random很麻烦 只能生成0-1的随机值 还得弄其他符号。顺便求助。。。
<script>
var time=0;
while(true)
{
time++;
var random=Math.floor( Math.random()*(1000) );
if(random==352)
{
alert("恭喜你,尝试了" + time + "遍,终于中了一次奖(号码:352)");
break;
}
}
</script>
请问 var random=Math.floor( Math.random()*(1000) );
中Math.random为什么要*1000呢?
2012年02月24日 13点02分 1
level 12
....
*n就表示得到的是0-n的随机数啊
2012年02月24日 13点02分 2
level 12
不包括n
2012年02月24日 13点02分 3
level 8
jy03692141 楼主
这样啊,那这段的意思就是有1000个号码咯?
可是1000个号码抽一个的概率不是千分之一吗?
因该不会超过1001把。 可是我有次输出的结果是您尝试了1172次。请问这是为什么啊
2012年02月24日 13点02分 4
level 12
包括0,不包括1000;下限为Math.random()*(上限-下限)+下限;上限为:Math.random()*(上限-下限)+上限
2012年02月24日 13点02分 5
level 12
1172次。和那个上下限时没关系的。。那是你的尝试次数。。其实你可以在随即数的前面加一个取整:parseInt(Math.random....)这样每次去的都是整数..额。。这个Math.floor是取啥?
2012年02月24日 13点02分 6
level 12
概率不是你这样算的
如果是1千个球你抽一次就少一个球才是抽1000次必中
但是你这个是每次抽都是在1000个球里面抽中一个,意思是每次你抽中的概率都是1千分之一
你运气实在太差很可能你会尝试1万次甚至更多
2012年02月24日 13点02分 7
level 12
Math.floor就是取整,这里用这个更好些其实,parseInt最好还要加个第二个参数10免得不注意被当成8进制取了
2012年02月24日 13点02分 8
level 12
。。我每次取整都是这样用 parseInt(Math.random()*1000)和Math.floor(Math.random()+1000)有什么区别呢?
2012年02月24日 14点02分 9
level 12
我一般也用的parseInt,简短一点点,查一下这两个函数的定义就清楚了呗
用在这里效果一样的,只不过parseInt(x)如果x你传的是以0开头的一个串会把x当作八进制解释,因为parseInt有第二个设置进制的参数的,默认是10进制,说这个只是我以前没注意出过一次错,就顺便说下
2012年02月24日 14点02分 10
1