【问题标题】:how to make random number generator for c [closed]如何为c制作随机数生成器[关闭]
【发布时间】:2013-12-30 02:14:41
【问题描述】:

我想创建一个程序,提示用户生成一定数量的随机数(1 到 20 之间)。然后程序会生成(1 到 40)之间的数字数量。生成的数字应该都是唯一的。

我不知道如何让他们产生一个唯一的号码。

【问题讨论】:

  • @woolstar;这家伙用中文告诉你:I don't know.
  • @hacks 你是对的:P
  • @user3145072 你说的独特是什么意思?
  • 鉴于您施加的限制,您可以为数字 1..40 创建一个初始化为零的数组。每次生成一个数字时,检查它是否已经被使用,如果没有,则通过将数组元素设置为1来记录它是生成的。通过尝试在 1..20 范围内生成 30 个唯一整数,确保不会陷入无限循环。这假设您了解rand()srand()。还有其他更好的 PRNG。
  • @rullof:密切相关,但并不完全相同。洗牌一个用值 1..40 初始化的数组并在你洗牌前 20 个值时停止肯定是有效的。对于这种规模的问题,差异可以忽略不计。还有其他技术。 Jon Bentley Programming Pearls 很好地讨论了它们,IIRC。

标签: c random unique


【解决方案1】:

如果你想在每次运行程序时生成唯一的随机数,那么试试这个;

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

int main(void)
{
    int n, num;
    printf("Enter the amount of numbers to generate");
    scanf("%d", &n);
    bool temp[40];
    srand((unsigned)(time(NULL)));

    for (int i=0; i<n+1; i++){
        temp[i] = false;
    }

    for (int i=0; i<n;)
    {
        num = 1 + rand()%40;
        if(temp[num] == false)
        {
            printf("%d\n", num);
            temp[num] = true;
            i++;
        }

    }
    return 0;
}  

【讨论】:

猜你喜欢
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多