【问题标题】:3 random numbers into array [closed]3个随机数进入数组[关闭]
【发布时间】:2016-02-14 07:45:00
【问题描述】:

我正在编写程序的开头,即让计算机在控制台上生成 3 个随机数。

它们需要是 1-9(包括两者),没有数字可以重复,我需要将这个答案放入一个数组中。主要方法类与类中需要什么。

【问题讨论】:

  • 洗牌你会得到随机数
  • 发布你的尝试!
  • 为什么这是基于意见的?这不是蓝色还是红色汽车的最佳颜色的问题。这有一个非常明确的问题,无论它多么微不足道。

标签: c# random


【解决方案1】:

您应该先自己尝试一下(网站规则是这样说的),但可能会提供一些提示:

1) 整数随机数可以使用Random 类生成。更多细节可以在here找到,并且已经提供了关于生成的答案

2) 为避免重复每个数字都应针对现有的数字列表进行测试:

array.Contains(generatedNumber)

3) 对于您的特定要求,一个优雅的选项是generate 1 到 9 之间的所有数字,随机排列数组并选择前三个元素:

var initArray = Enumerable.Range(1, 9).ToArray();
var randomArray = initArray.OrderBy(x => rnd.Next()).ToArray(); 

获取前三个元素,它们是随机且不同的。

一般情况下,您可以使用here指定的方法来创建子数组。

【讨论】:

    【解决方案2】:

    试试这个:

    Random rnd = new Random();
    int[] arr = Enumerable.Range(0, 10).OrderBy(n => rnd.Next()).Take(3).ToArray();
    
    foreach (var n in arr)
    {
        Console.WriteLine(n);
    }
    

    【讨论】:

    • 有评论否决?
    【解决方案3】:

    试试下面的代码:

    //range set 0 to 9
    int Min = 0;
    int Max = 10;
    
    //declare an array which store 3 random number
    int[] arr = new int[3]; 
    
    Random randNum = new Random();
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i] = randNum.Next(Min, Max);
        Console.WriteLine(arr[i]);
    }
    

    【讨论】:

    • 这不会防止重复值
    • 这也从不选择9
    • @Enigmativity ....... 将 Max 9 更改为 10 ...
    • @derpirscher .... 你在说什么样的重复值??
    • @NadimulDeCj 原始问题指出没有数字可以重复。您的代码不会阻止这一点(即相同的数字可以在结果数组中出现两次甚至三次)
    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2018-11-08
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多