我想给一个变量取值,取1的概率是10%,2的概率是20%,3的概率是30%,4的概率是40%
请问该怎么办
请问该怎么办
解决方案 »
- wpf窗体程序中弹出对话框效果问题
- 菜鸟问题:如何将一个字符串数组按行写入到一个文本文档中呢?
- C# Timer控件与线程
- SVG - Netron
- 从字符串中提取一段数组(winforms)
- 呼叫 cutman (接分来了) 请帮忙解决在一副图片上画一个可以任意拉申控制大小的矩形问题(winform)
- data grid 里的属性列 的 按纽列 删除按纽 怎么使用呀 我运行程序时怎么删不掉?
- 请问C#中函数、方法、属性三者的区别是什么?小弟有点迷糊了!!!!谢谢
- 我用VS2008 水晶报表开发,加载图片的时候是空白,后台查看是有数据
- 请问InternetExplorer object和WebBrowser object有什么区别吗?
- 关于读取远程xml 捆绑GridView的问题
- TreeNode 的字显示粗体!!!!
{
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);
再用一楼的方法.
//0<=rate<=1
double _result = 0;
class getnumber(double rate,double result)
{
double num = (new Rand()).Rand(0,10)/10;
if(num < = rate)
_result = result;
}
int num=rand.Next(10); if (num < 6)
{
drc[i,j] = 1; }
else if (num <8)
{
drc[i, j] = 2;
}
else if (num < 9)
{
drc[i, j] = 3;
}
else if (num < 10)
{
drc[i, j] = 4;
怎么出来结果全是1呢?????
{
Random r = new Random ();
int num = r.Next(100);
if (num<=13)
{
return 1;
}
if (num>13&&num<=51)
{
return 2;
}
if (num>51&&num<=94)
{
return 3;
}
if (num>94)
{
return 4;
}
}大概是这样 具体的数你自己把握
for (int i = 0; i < 10; i = i + 1)
{
for (int j = 0; j < 10; j = j + 1)
{
System.Random rand=new Random(DateTime.Now.Millisecond);
int num=rand.Next(100); if (num < 40)
{
drc[i,j] = 1;
}
else if (num <65)
{
drc[i, j] = 2;
}
else if (num < 85)
{
drc[i, j] = 3;
}
else
{
drc[i, j] = 4;
}
}
}
for (int i = 0; i < 10; i = i + 1)//把 i = i + 1 改成 i++...
...把随机发生器放到循环之外...伪随机发生器用相同的种子每次产生的随机数序列都是相同的...另外你才循环10次,系统时钟在大约15毫秒之内都是一样的...多看看书,搞清楚原理...
{
for (int j = 0; j < 10; j = j + 1)
{
System.Random rand=new Random(DateTime.Now.Millisecond);
int num=rand.Next(100); if (num < 40)
{
drc[i,j] = 1;
}
else if (num <65)
{
drc[i, j] = 2;
}
else if (num < 85)
{
drc[i, j] = 3;
}
else
{
drc[i, j] = 4;
}
System.Threading.Thread.Sleep(10);
}
}
{
for (int j = 0; j < 10; j = j + 1)
{
int num=rand.Next(100); if (num < 40)
{
drc[i,j] = 1;
}
else if (num <65)
{
drc[i, j] = 2;
}
else if (num < 85)
{
drc[i, j] = 3;
}
else
{
drc[i, j] = 4;
}
}
}
完全没有必要 Sleep(1),把
Random rand = new Random();
放在循环外就一切OK了。
// 跟楼上说的一样,随即取数组坐标.用数组里面的数值来控制每个数值占的百分比.
int[] randomc = new int[100];
for (int i = 0; i < 100; i++)
{
if (i < 13)
randomc[i] = 1;
if (i < 50 && i >= 13)
randomc[i] = 2;
if (i < 93 && i >= 50)
randomc[i] = 3;
if (i >= 93)
randomc[i] = 4; }
System.Random random = new Random(0);
int ran = random.Next(99);
Console.WriteLine(randomc[ran].ToString());
Console.ReadLine();