【问题标题】:How can I generate a random number from a group of numbers (not a range)如何从一组数字(不是范围)中生成随机数
【发布时间】:2015-01-11 17:24:56
【问题描述】:

我希望能够从一组数字中生成一个随机数,例如:1、2、3、12、11、23、45、54、10、10、12、23、35、 24. 使用 rand 和 srand 我可以每次生成不同的随机数,但我希望能够通过从一组中生成随机数来调节结果。

【问题讨论】:

  • 可以生成随机数组索引,然后从允许数字的数组中选取对应的元素。
  • “每次都不一样” - 你知道你只能生成 len(list) 数字吗?

标签: c random numbers


【解决方案1】:

示例代码

获取一个数组

int a[]={ 1, 2, 3, 12, 11, 23, 45, 54, 10, 10, 12, 23, 35, 24};
int i = rand()%14; // here 14 is number of element in array.

i 将收到介于 013 之间的值
终于

printf("%d",a[i]);    //print that array index

【讨论】:

  • 不存在重复相同数字的可能性吗?
  • @Gopi 是的,同一个号码有可能打印不止一次。这取决于i 的值。
  • @Himanshu 谢谢,我会试试的。 Gopi 的想法正是如此。即使打印的数字是随机的,我也可以通过在组中重复数字来影响结果。
  • @Himanshu 有没有办法在不重复结果的情况下做到这一点?原来我可能也需要那个。例如 {1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6} 如果我想打印 3 个他们不能的随机随机数被重复。感谢您的帮助!
  • @zemanel 因为您正在使用重复的数字,所以您很有可能再次获得相同的数字。在我展示的示例中,您可以再使用 1 个 int array 保存它正在生成的随机索引,如果它以前不存在的话。如果该索引号已经存在,则再次生成随机数。
猜你喜欢
  • 1970-01-01
  • 2014-01-29
  • 2013-01-22
  • 2015-12-22
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 2018-04-08
  • 2022-10-06
相关资源
最近更新 更多