水区万能,C语言的问题
用rand函数生成随机数,70+随机树*570要等于10的倍数,怎么解决? rand函数貌似生成的是伪随机数,还有一个函数SRAND可以生成随即数的种子,然后用RAND函数再做 70+随机树*570要等于10的倍数把x设为实数
x=(70+rnd*570)\10
if x==0.00001 then printf x
貌似是这样吧?我也忘了,我整天把VB和C搞混的 int x=0
while(x-(x/10)*10!=0)
x=70+rand*570;
//具体的忘记了,大致就是这个意思,注意rand生成的是0-1之间的小数, 没学过then指令。 看到这问题才发现我很少用这函数
注意沙发的问题,然后是注意板凳的问题,因为生成的方式kuso,如果你的目的是非常“随机”,请想办法使用其他更好的函数(我也不会,自己查)或者在原有random上放大(当年图形图像用过,忘记了,大概是把生成数经过简单or复杂计算让其覆盖范围更大)
想起年会上抽奖用软件多次连续抽中同一人。。。。原因之一就是因为使用了这个生成函数
事后追究责任,据闻负责人说,其实我也是图方便网上下载的。。。。群众BS,一个软件公司开年会出现这种问题丢人不 。。。。一个也看不懂 原帖由 帕伽索斯 于 2008-2-27 00:00 发表 http://bbs.newwise.com/images/common/back.gif
看到这问题才发现我很少用这函数
注意沙发的问题,然后是注意板凳的问题,因为生成的方式kuso,如果你的目的是非常“随机”,请想办法使用其他更好的函数(我也不会,自己查)或者在原有random上放大(当年 ...
我笑抽了
雖然當年我只懂的用EXCEL去弄抽獎系統(遠目 这个条件真扯……
原问题等价于:(70+x*570) mod 10 = 0<=>7+57x为整数<=>x为1/57的整数倍
不过如果要计算机的随机数正好是1/57的整数倍,这个恐怕几乎不可能,毕竟位数有限,而1/57是无限循环小数……
所以还是让x为随机生成的整数好了…… - -
比如:x=(int)(rand*10); y=70+x*570;
页:
[1]