日期:2014-05-18  浏览次数:20893 次

请问该用什么函数
我想给一个变量取值,取1的概率是10%,2的概率是20%,3的概率是30%,4的概率是40%
请问该怎么办

------解决方案--------------------
int result=0;

int num = (new Rand()).Rand(0,10);

if(num<1)
{
num=1;
}
else if(num<3)
{
num=2;
}
else if(num<6)
{
num=3;
}
else if(num<10)
{
num=4;
}
------解决方案--------------------
一楼的方法挺好的,不知道每次产生的随机数是不是一样.
用下面的方法,产生的随机数每次都不一样.
C#:
System.Random rand=new Random(DateTime.Now.Millisecond);
int num=rand.Next(10);
再用一楼的方法.
------解决方案--------------------
System.Random rand=new Random(DateTime.Now.Millisecond); 
for (int i = 0; i < 10; i = i + 1)//把 i = i + 1 改成 i++...
...

把随机发生器放到循环之外...伪随机发生器用相同的种子每次产生的随机数序列都是相同的...

另外你才循环10次,系统时钟在大约15毫秒之内都是一样的...

多看看书,搞清楚原理...
------解决方案--------------------
探讨
随机数是以当前的CPU时间和时钟频率为随机种子来生成的,所以在一定时间内,生成的数字是一样的。

加上System.Threading.Thread.Sleep(1); //经过测试,SLEEP 1就可以了,可以产生不同的数字了