首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

初学者,问个初学者有关问题。请路过的高手告诉一下

2013-12-20 
菜鸟求助,问个菜鸟问题。请路过的高手告诉一下。就是用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的种子就不一样的了.
如果你短用控制台输出,后面一种情况也是一样的.

楼主乳头不错.
[解决办法]
引用:
就是用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());

            }
          这样倒是可以获得随机值。我想破了我的乳头也没有想出来,不知道何解?求赐教,在线等!

 Random rd = new Random();放在循环外面
[解决办法]
引用:
Quote: 引用:

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);
}

热点排行