一个可以生成不重复随机数的函数(1~INF)

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <cstring>
 4 #include <queue>
 5 #include <set>
 6 #include <cmath>
 7 #include <time.h>
 8 #include <cstdlib>
 9 #include <algorithm>
10 using namespace std;
11
12 const int N = 1000007;
13 const int INF = 0x7fffffff;
14
15 inline int ran(){
16     static int seed = 703; //seed可以随便取
17     return seed = int(seed * 48271LL % INF);
18 }
19
20 set<int> s;
21
22 int main()
23 {
24     while (1)
25     {
26         s.clear();
27         int flag = 1;
28         for (int i = 0; i < INF / 1000; i++)
29         {
30             int t = ran();
31             if (s.find(t) == s.end())
32                 s.insert(t);
33             else
34             {
35                 flag = 0;
36                 break;
37             }
38         }
39         if (flag)
40             printf("YES\n");
41         else
42             printf("NO\n");
43     }
44     return 0;
45 }
时间: 2025-01-12 07:22:59

一个可以生成不重复随机数的函数(1~INF)的相关文章

mysql生成不重复随机数(unique number generation)

转自:http://blog.csdn.net/dreamer2020/article/details/52049629 问题来源 业务中有时会遇到要生成不重复随机数的情况,例如,新生成一个商品编号.房间编号.或者其他物品编号等.不愿意采用表的自增索引 id,同时又希望新生成的编号是不重复的. 这就需要考验mysql的随机数功能了. Solution mysql的rand函数可以生成一个0到1之间的随机数,进行一定的放大即可得到一个随机数.再通过条件查询来限制新随机数没有在表中出现过.如下所示:

一个php生成16位随机数的代码(两种方法)

一个php生成16位随机数的代码,php生成随机数的二种方法. 方法1<?php$a = mt_rand(10000000,99999999);$b = mt_rand(10000000,99999999);echo $a.$b; 方法2:<?php$a = range(0,9);for($i=0;$i<16;$i++){$b[] = array_rand($a);} // www.yuju100.comvar_dump(join("",$b));//结果string

Java编程:实现双色球彩票生成器,生成不重复随机数

public static void main(String[] args) {  System.out.print("红色的号码为:");  Set<Integer> set=new HashSet<Integer>();  while (true) {   int i=(int)(Math.random()*33+1);   set.add(i);   if (set.size()>=6) {    break;   }  }  for (Object

生成不重复随机数函数

// 生成随机数函数 function createRandom(num,from,to) { var arr=[]; // 随机数数组 var json={}; // 标记json对象 while(arr.length<num) { // 产生单个随机数 var ranNum=Math.round(Math.random()*(to-from))+from; // 通过判断json对象的索引值是否存在 来标记 是否重复 if(!json[ranNum]) { json[ranNum]=1; a

C# Random 生成不重复随机数

Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了. 伪随机数的生成是从种子值开始.如果反复使用同一个种子,就会生成相同的数字系列.产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列.默认情况下,Random 类的无参数构造函数

如何更快的生成不重复随机数思路

最新接到一个需求,由于运营需要我们需要在原用户的信息上加入一个邀请码用于推广. 略为思考一下,我们可以将需要拆分为一下几点: 1.邀请码为数字和字母组成6位的随机数 2.随机数不能重复 3.将数据与用户关联,插入数据库 -------------------------------------------------------------------- 解决思路: 生成随机数不表,大家应该都会 不重复如何解决呢,有同学想到先到数据库中做一次查询,如果没有该随机数再进行插入,如果有重新生成,做一

JS生成不重复随机数

说明 我们可以用Math.random()的方法轻松的生成 一个随机的数字,但是这个数字可能是重复的.有时候,我们需要一个不重复的随机数,可以用很多的方法来实现这个要求,以下方法是效率最高的. 解释 不重复的随机数往往是规定范围的,我们先声明一个在这个范围之内的数组,然后用sort方法对数组进行排序.而排序的方法里使用一个随机数,这个随机数使这个排序方法是不确定的.因此可以得到一个不重复的随机数组. 代码 1 <!DOCTYPE html> 2 <html> 3 <head&

C#生成不重复随机数的方法

在使用Random类生成随机数时,我们可能会碰到生成随机数重复的问题. 比如我们要生成6位数字验证码,虽然也是使用Random,但是可能出现111111,999999这样的情况. 这是因为在实例化Random类时,如果随机种子不填写,默认是以时间线作为种子进行伪随机运算,当计算运行速度过快时,导致所有的随机种子都是一个值. 解决的方法也很简单,我们使用Guid的哈希码作为种子值,就不会重复了,代码如下: 1 public class RandomHelper 2 { 3 /// <summary

生成不重复随机数

利用C++中的bitset来检查生成的随机数是否重复.这样可以将内存空间的消耗降低,并且在每次检查是否重复时不用搜索整个序列. #include <iostream> #include <ctime> #include <bitset> using namespace std; #define MAX 101 int main(void) { bitset <MAX> flag; srand((unsigned)time(NULL)); for (int i