c#里用了random了,具体如下:
Random k = new Random();
int testkind;
testkind = k.Next(2);
请问一下这个随机数是固定的还是会改变的?另外,随了十几次,发现出现零的概率远大于一啊,大约8:2的样子,有什么改进的方法让它出现得均匀一些?
Random k = new Random();
int testkind;
testkind = k.Next(2);
请问一下这个随机数是固定的还是会改变的?另外,随了十几次,发现出现零的概率远大于一啊,大约8:2的样子,有什么改进的方法让它出现得均匀一些?
解决方案 »
- 网上搜不到的答案 C# 如何读取串口数据里 我指定的字节的参数呢?
- 「玩一玩」带节点的曲线,可以鼠标拖动节点,类似PS
- 请不要把CSDN当成免费的劳动力市场———散分!
- Page.Request.Files.Count问题
- 100个用户并发连接,执行clinetSocket=AcceptSocket()后中,clientSocket是不同的实例吗?
- C#2.0调用ActiveX组件出错,请教原因?
- 刚做完一个站点,散分 ....
- winform自定义控件TextBox 如何获取背景色?
- [超简单的]小声的问一下~这个程序哪里错了~~
- C# winform 窗体打印
- 急急急!!C#调用Dll文件,尝试读取写入受保护的内存。这通常指示其他内存已损坏
- c# 上传图片生成缩略图问题?找了个代码不会用....
{
//throw new Exception("aaa");
Random r = new Random();
int n = 0;
for (int i = 0; i < 100; i++)
{
n += r.Next(2);
}
MessageBox.Show(n.ToString());
}结果:53
{
//throw new Exception("aaa");
int n = 0;
for (int i = 0; i < 100; i++)
{
Random r = new Random();
n += r.Next(2);
}
MessageBox.Show(n.ToString());
}
结果0
int testkind;
testkind = k.Next(0,2);
试试
{
//throw new Exception("aaa");
int n = 0;
for (int i = 0; i < 100; i++)
{
System.Threading.Thread.Sleep(100);
Random r = new Random();
n += r.Next(2);
}
MessageBox.Show(n.ToString());
}
结果:46
你在很短的时间内迅速执行得到的Random值会一样解决办法:
1:给Random另一个 随机值
2:让同一个Random生成(Random每生产一次,内部状态会变化)
3:休息一会(System.Threading.Thread.Sleep(100);)
“Random r= new Random(); ” 显然应该写在for之外才对。怎么能每一次都new一个新的r对象呢?显然这100次都应该是针对同一个r去顺序的下一个随机数。比较可靠的写法是定义为static变量。
int result = 0;
int i = r.Next(1,100);
if(i<=50) {
result = 0;
} else {
result = 1;
}
0跟1的概率都为50%