C#Threading - 所有线程都在计算相同的随机值,为什么呢?

时间:2017-09-21 05:21:57

标签: c# multithreading random

程序正在询问10个线程并在打印随机值的函数上启动它,但所有这些线程都打印相同的Random值。

我的朋友说,这是由于线程在相同的CPU时钟使用rand计算所以这就是原因。他是对的

如果有解决方案吗?

      private DateTime randomNum()
    {

         Random r = new Random();
        int rInt = r.Next();
    }

button_click1

         for (int i = 0; i < numofThreads; i++)
        {

            res[i] = delcall.BeginInvoke(null, null);
        }
        //int[] num = new int[numofThreads];
        for (int i = 0; i < numofThreads; i++) {
            DateTime dt = delcall.EndInvoke(res[i]);
            richTextBox1.AppendText(dt + "\n ");
        }

1 个答案:

答案 0 :(得分:0)

每次都不要创建redshift failed to load driver class. this error may be caused by all-in-one jar packaging. please try again with the lean package的新实例。如果同时创建多个Random实例,则它们的种子是相同的。这意味着他们都表现得相同。只需多次使用一个Random实例。因此,在方法之外声明它。

Random