c# - 输出错误。我的随机数在哪里?

标签 c# listview for-loop random

我是编程新手,正在阅读一本关于 C# 的书。这段代码没有输出我所期望的结果。

这是代码:

public partial class Form1 : Form
{
    static string stars = "****************************************************************";
    const int MAXVAL = 52;
    const int MAXELEMENTS = 100;

    int[] data = new int[MAXELEMENTS];

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int i;
        Random rd = new Random(5);
        int j;
        string buff;

        for (i = 0; i < data.Length; i++)
        {
            data[i] = rd.Next(MAXVAL);
            buff = " ";
            for (j = 0; j < data[i]; j++)
            {
                buff += "*";
                lstResult.Items.Add(data[i].ToString() + " " + buff);
            }
        }
    }
}

这是输出: enter image description here

为什么 ListView 中没有随机顺序的随机数?

最佳答案

您始终使用相同的数字 5 为随机实例播种。这会导致重复数字。您只需使用默认构造函数即可:

Random rd = new Random();

查看 MSDN 上的示例这正是显示了这种行为。

顺便说一句,这也是一个常见的陷阱,您应该始终重用相同的随机实例,而不是始终创建一个新实例(在循环中),因为种子是从当前时间创建的。如果您非常快地创建随机数,您将获得相同的种子,从而导致重复的数字。

关于c# - 输出错误。我的随机数在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19361037/

相关文章:

根据 R 中的条件语句替换以下 n 个元素

c# - MS Office Interop - 无法发布对 RCW 的引用

c# - 选择后组合框专注于文本的开头

安卓应用 : JSON array from web to listview

java - 用于运行/停止程序的 for 循环

php - 如何在php中循环传递数组?

c# - C#中迭代器和数组的区别

c# - WCF:从服务内部访问 Windows 窗体

javascript - 从Javascript中的行索引查找ListView项目

wpf - ListBox 项加载动画