【问题标题】:Random number generator choosing only between given few numbers in C#随机数生成器仅在 C# 中给定的几个数字之间进行选择
【发布时间】:2017-02-11 11:17:05
【问题描述】:

我知道如何在两个数字之间选择随机数。但是我不知道如何让它选择我告诉它的随机数。

这就是我想要做的。我有 5 个整数。

int Hamburger = 5;
int Sandwich = 7;
int ChickenSalad = 10;
int Pizza = 15;
int Sushi = 20;

5,7,10,15,20 是每种食物的价格,我想让它从这些选定的数字中选择一个随机数。 5,7,10,15,20。

我是 C# 新手,所以我对此知之甚少。我找到了这个

randomNoCorss = arr[r.Next(arr.Length)];

在另一篇文章中,但我不明白,我不知道如何将其放入我的代码中。

【问题讨论】:

  • 我了解您是 C# 新手。但是,您可能对 www.google.com 并不陌生。如果你在谷歌上花了一分钟来搜索你要找的东西,你可能会很容易找到。不用担心。下次在发布问题之前尝试做一些解决方法。 http://stackoverflow.com/questions/2019417/access-random-item-in-list .. 所以我投票赞成关闭这个问题,因为它是重复的。
  • @SivaCharan 本身不是重复的。 OP 没有询问如何从数组中随机获取值。他在问如何从多个给定值中获取随机值,但不知道最简单的方法是用它们构建一个数组。
  • @Abion47:参考这个答案 http://stackoverflow.com/a/2019432/500725,它讨论了如何从值列表中找到随机数。我看到您发布的答案和我给出的参考答案都在谈论同一个主题。因此问题是重复的。
  • @SivaCharan Dude,我知道你在说什么,但 OP 的值来源不是数组(或列表)。链接的可能重复项并没有解决这个事实,因为它假定值已经存储在数组中。

标签: c# random


【解决方案1】:

您必须创建一个包含可能值的数组,然后为该数组随机生成一个索引:

int Hamburger = 5;
int Sandwich = 7;
int ChickenSalad = 10;
int Pizza = 15;
int Sushi = 20;

Random r = new Random();
var values = new[] { Hamburger, Sandwich, ChickenSalad, Pizza, Sushi };
int result = values[r.Next(values.Length)];

它的作用是获取所有给定的值并将它们放入一个数组中。然后它会生成一个介于04 之间的随机整数,并使用该整数从数组中获取一个值,并将生成的整数用作数组的索引。

【讨论】:

  • 非常感谢
【解决方案2】:

完整代码为:

Random r = new Random();
int[] priceArray = new int[] { 5, 7, 10, 15, 20 };
int randomIndex = r.Next(priceArray.Length);
int randomPrice = priceArray[randomIndex];

【讨论】:

    【解决方案3】:

    您需要将您的值添加到一个数组中,然后您可以从该数组中选择一个随机数

      int[] myNumbers = new int[] { 5, 7, 10, 15, 20 };
      var random = new Random();
      var numberResult = myNumbers[random.Next(5)];
    

    【讨论】:

      【解决方案4】:

      您可以在 LINQ 中执行此操作:

      int[] intArray = new int[] { 5, 7, 10, 15, 20 };
      
      int result = intArray.OrderBy(n => Guid.NewGuid()).Select(x => x).Take(1)
                  .SingleOrDefault();
      

      根据您在变量 intArray 中声明的整数数组,结果将是随机的。

      或者您可以通过获取数组的随机索引来做到这一点:

       int[] intArray = new int[] {5, 7, 10, 15, 20 };
       Random rndom = new Random();
       int index = rndom.Next(0, intArray.Length - 1); //Since int array always starts at 0.
       int intResult = intArray[index];
      

      如果您需要更多说明,请告诉我。

      【讨论】:

      • 永远不要将 GUID 用作随机性的函数。 GUID 保证是唯一的,而不是随机的。请改用Random.Next
      • 您是否先尝试过代码?它将根据选择的数组生成一个随机数,而不是超出它。
      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多