如何创建一个不重复的随机数? [英] How to create a non-repeating random number?

查看:46
本文介绍了如何创建一个不重复的随机数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为老人之家制作宾果游戏.我能够使用用于扫描数组的随机数生成器制作一个,但问题是搜索数组需要很长时间(2 分钟)并确保没有重复.我做了一些研究,发现在 c 中称为伪随机的东西在创建时不会重复数字.但是代码看起来非常复杂,所以我不喜欢接受我不完全理解的东西.这给我带来了一个问题,有没有一种简单的方法可以创建一个非重复的随机数生成器,或者有一个很好的解释可以解释一个?

I am trying to create a Bingo Game for an Elderly home. I was able to make one using random number generators that are used to scan an array but the problem is that it takes to long(2 min) to search the array and ensure no doubles are repeated. I did some research and found something called pseudo random in c that does not repeat numbers upon creation. But the code looks very convoluted so I do not feel comfortable taking something that I do not fully understand. Which brings to my question which is there a simple way to create a non-repeating random number generator or a good explanation that could explain one?

推荐答案

很久以前,我用 C 语言编写了一个非常简单的程序,它可以生成 0 到 20 之间的 10 个随机数,而不会重复任何数字.

Long ago, I wrote this very simple program in C programming language that generate 10 random numbers between 0 to 20 without repeating any number.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10      //Number to be generated.
#define rangeMAX 20 //Upper limit of range.
#define rangeMIN 0  //Lower limit of range.

int main()
{
  int get, c, i, arr[MAX], chk, x;
  c = i = 0;
  srand(time(0)); // this will ensure that every time, program will generate different set of numbers. If you remove this, same set of numbers will generated every time you run the program.
  while(c < MAX)
  {
    get = ((rand() % (rangeMAX-rangeMIN+1)) + rangeMIN); // generate random number.
    //After generating that number check if it is already in array.
    for(i=0; i<=c; i++)
    {
        if(arr[i] == get)
        {
            chk = 0;
            break;
        }
        else if(arr[i] != get)
        {
            chk = 1;
        }
    }
    if(chk==1)
    {
        arr[c]=get;
        printf("%d\n",arr[c]);
        c++;
    }
  }
  return 0;
}

希望这会有所帮助.

这篇关于如何创建一个不重复的随机数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆