初学者,问个初学者有关问题。请路过的高手告诉一下
菜鸟求助,问个菜鸟问题。请路过的高手告诉一下。就是用listintnew了一个对象,然后用for循环,在循环内部用l
菜鸟求助,问个菜鸟问题。请路过的高手告诉一下。
就是用list<int>new了一个对象,然后用for循环,在循环内部用list变量的add方法来添加元素,用random方法。结果循环下来所有的元素值都是一样的,如果不用list倒是可以随机了。代码如下:
List<int> aa = new List<int>();
for (int a = 0; a < 10; a++)
{
Random rd = new Random();
aa.Add( rd.Next(1, 8));
}
foreach (int bb in aa)
{
MessageBox.Show(bb.ToString());
}
这样下来10个值都是一样的。如果是:
List<int> aa = new List<int>();
for (int a = 0; a < 10; a++)
{
Random rd = new Random();
int b= rd.Next(1, 8);
MessageBox.Show(b.ToString());
}
这样倒是可以获得随机值。我想破了我的乳头也没有想出来,不知道何解?求赐教,在线等!
[解决办法]
List<int> aa = new List<int>();
Random rd = new Random();
for (int a = 0; a < 10; a++)
{
aa.Add(rd.Next(1, 8));
}
种子问题,
系统这个种子和时间有关.
你下面的一个一个的弹出所以感觉是对的.因为弹出你消耗了时间,所以下一个Random的种子就不一样的了.
如果你短用控制台输出,后面一种情况也是一样的.
楼主乳头不错.
[解决办法] Random rd = new Random();放在循环外面
[解决办法]随机数的生成是从种子值开始。 如果反复使用同一个种子,就会生成相同的数字系列。 产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列。 默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用 Int32 值。 但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器。
[解决办法]赞同楼上的,把Random rd = new Random();放在循环外面,下面有个例子
DataTable table = new DataTable();
Random randomData = new Random();
int j = 0;
for (j = 1; j < 11; j++)
{
DataRow row = table_chart.NewRow();
row[0] = j;
row[1] = j * 9;
for (int k = 2; k < columns.Count; k++)
{
row[k] = randomData.Next(1, 99);
}
table .Rows.Add(row);
}