vc下产生一个四位随机不重复数字

我在vc下做一个猜数字小游戏时要产生一个四位随机不重复数字,费了好大力气才弄好。

希望对有相同需求的,有些帮助
结果图
利用srand()函数以当前时间秒为种子,rand()函数以这个种子产生随机数。

程序中为了看效果,先输出后判断并加了延时
程序代码如下
#include <stdlib.h> /*包含rand() srand()函数的标准库*/ #include <stdio.h>
#include <time.h> /*包含time() 函数的标准库*/
void main( void )
{
inti,j;
intra[3];
int flag;
do{
srand( (unsigned)time(0) );
i=rand()%8977+1023;
ra[0]=i/1000;
i%=1000;
ra[1]=i/100;
i%=100;
ra[2]=i/10;
i%=10;
ra[3]=i;
for(i=0;i<4;i++)
printf("%d ",ra[i]);
printf("\n");
if(ra[0]!=ra[1]&&ra[0]!=ra[2]&&ra[0]!=ra[3]&&ra[1]!=ra[2]&&ra[1]!=ra[3]&&ra[2]!=ra[3]) flag=0;
else
flag=1;
for(i=0;i<300000000;i++) /*延时*/ ;
}while(flag);
}。

合集下载

vc中产生随机数

vc中产生随机数
double randf()
{
return (double)(rand()/(double)RAND_MAX);
}
如果要实现类似Turbo C的random函数,可以如下:
int random(int number)
{
return (int)(number/(float)RAND_MAX * rand());
srand( (unsigned)time( NULL ) );
/* Display 10 numbers. */
for( i = 0; i < 10;i++ )
printf( " %6d\n", rand() ); }
在调用这个函数前,最好先调用srand函数,如srand( (unsigned)time( NULL ) ),这样可以每次产生的随机数序列不同。 如果要实现类似0-t; #include <stdio.h> #include <time.h>
void main( void )
{
int i;
/* Seed the random-number generator with current time so that * the numbers will be different every time we run. */
}
楼主请问copyfileex在ntfs文件系统类型下拷贝大于1gb的文件时回调函数的进度值已达到100但copyfileex这个函数要一份多种才能返回其结果值请问有什么办法让它立刻返回cop
vc中 产 生 随 机 数
使用rand函数获得随机数。rand函数返回的随机数在0-RAND_MAX(32767)之间。 例子: /* RAND.C: This program seeds the random-number generator * with the time, then displays 10 random integers. */

猜游戏设计与实现

猜游戏设计与实现

(c/c++程序设计课程设计)设计说明书猜数字游戏的设计与实现学生姓名刘帆学号0918014003班级计本091班成绩指导教师曹阳计算机科学与技术系2010年 07 月09 日c/c++程序设计课程设评阅书课程设计任务书2009 —2010 学年第二学期专业:计算机科学与技术学号: 0918014003 姓名:刘帆课程设计名称: c\c++程序设计课程设计设计题目:猜数字游戏的设计与实现完成期限:自 2010 年 6 月 28 日至 2010 年 7 月 9 日共 2 周设计依据、要求及主要内容(可另加附页):猜数字是一种益智类小游戏,游戏规则比较简单,一般两个人玩,一方出数字,一方猜。

用C/C++语言编写一个程序实现《猜数字》游戏中的出数字方,要求程序完成以下功能:1)阐述设计思想,画出流程图;2)随机抽取一个4位整数K,要求这个四位数没有重复数字,最高位不是0;3)提示玩家,猜一个数字;4)根据玩家猜的数,与K比较,判断玩家猜的数字中位置正确的数字个数m和数字正确而位置不对的数的个数n,并以mAnB的形式输出;5)如果玩家没有猜对,那么提示mAnB,让玩家继续猜,否则输出“你棒极了,这个数字就是……,你一共猜了……次哦!”;6)如果玩家猜了X(X<M,M为猜数的最多次数)次还不对,那么提示玩家“你已经猜了x次了,还要继续吗?请选择;如果X=M,则给玩家提示相应的信息;7)说明测试方法,写出完整的运行结果,较好的界面设计,编写课程设计报告。

指导教师(签字):教研室主任(签字):批准日期:年月日摘要猜数字是一种益智类小游戏,游戏规则比较简单,一般两个人玩,一方出数字,一方猜,出数字是由随机函数产生一个数字不重复的四位数(最高位不为零)。

本文以VC++作为软件开发环境,设计并实现了猜数字游戏软件。

该软件界面美观,操作简单,并根据所猜的数字给出相应的结果或提示。

关键词:猜数字;VC++;随机函数目录1 课题描述 (5)2 问题分析和任务定义 (6)3逻辑设计 (7)4 详细设计 (9)5 程序编码 (13)6 程序调试与测试 (18)7 结果分析 (21)8 总结 (22)参考文献 (23)1课题描述本次课题是猜数字游戏的设计与实现。

c语言随机生成8位数字

c语言随机生成8位数字

c语言随机生成8位数字在计算机编程领域,随机数生成是一项非常重要的技术。

C语言作为一种广泛应用的编程语言,也提供了生成随机数的函数库。

本文将介绍如何使用C语言生成8位数字的随机数。

在C语言中,我们可以使用rand()函数来生成随机数。

该函数位于stdlib.h头文件中,可以生成一个范围在0到RAND_MAX之间的随机整数。

但是,直接使用rand()函数生成的随机数可能不满足我们的需求,因为它的范围太大了。

为了生成8位数字的随机数,我们需要对rand()函数生成的随机数进行处理。

具体的处理方法如下:1. 使用srand()函数设置随机数种子。

srand()函数也位于stdlib.h头文件中,它用于设置随机数生成器的种子。

我们可以使用time()函数获取当前时间作为种子,确保每次运行程序时生成的随机数都不同。

2. 使用rand()函数生成一个0到99999999之间的随机整数。

我们可以通过对生成的随机数取模100000000来限制其范围。

3. 如果生成的随机数小于10000000,我们可以通过加上10000000来保证生成的随机数一定是8位数字。

下面是一个使用C语言生成8位数字随机数的示例代码:```c#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int random_num;srand(time(NULL)); // 设置随机数种子random_num = rand() % 100000000; // 生成0到99999999之间的随机整数if (random_num < 10000000) {random_num += 10000000; // 保证生成的随机数是8位数字}printf("随机生成的8位数字为:%d\n", random_num);return 0;}```通过运行上述代码,我们可以在控制台上看到一个随机生成的8位数字。

随机数生成原理实现方法不同编程语言的随机数函数

随机数生成原理实现方法不同编程语言的随机数函数

1-0:Microsoft VC++产生随机数的原理:Srand ( )和Rand( )函数。

它本质上是利用线性同余法,y=ax+b(mod m)。

其中a,b,m都是常数。

因此rand的产生决定于x,x被称为Seed。

Seed需要程序中设定,一般情况下取系统时间作为种子。

它产生的随机数之间的相关性很小,取值范围是0—32767〔int〕,即双字节〔16位数〕,假设用unsigned int 双字节是65535,四字节是4294967295,一般可以满足要求。

1-1:线性同余法:其中M是模数,A是乘数,C是增量,为初始值,当C=0时,称此算法为乘同余法;假设C≠0,那么称算法为混合同余法,当C取不为零的适当数值时,有一些优点,但优点并不突出,故常取C=0。

模M大小是发生器周期长短的主要标志,常见有M为素数,取A为M 的原根,那么周期T=M-1。

例如:a=1220703125a=32719 〔程序中用此组数〕a=16807代码:void main( ){const int n=100;double a=32719,m=1,f[n+1],g[n],seed;m=pow(2,31);cout<<"设置m值为"<<m-1<<endl;cout<<"输入种子"<<endl; //输入种子cin>>seed;f[0]=seed;for(int i=1;i<=n;i++) //线性同余法生成随机数{f[i]=fmod((a*f[i-1]),(m-1));g[i-1]=f[i]/(m-1);cout.setf(ios::fixed);cout.precision(6); //设置输出精度cout<<i<<" "<<'\t'<<g[i-1]<<endl;}}1-2:人字映射递推公式就是有名的混沌映射中的“人字映射〞或称“帐篷映射〞,它的非周期轨道点的分布密度函数:人字映射与线性同余法结合,可产生统计性质优良的均匀随机数。

游戏项目实训报告

游戏项目实训报告

电气信息学院实训报告课程名称: 软件项目实训实训题目: 猜数字游戏年级/专业/班: 2009过程自动化01 学生姓名: 学号: 实训成绩:指导教师签名:年月日1.引言1.1系统概述猜数字是一种益智类小游戏,游戏规则比较简单,一般两个人玩,一方出数字,一方猜。

要求用vc++6.0中mfc编写一个程序实现猜数字游戏中的出数字方,实现数字之间的相互比较,让玩家找出电脑写的三位数字,而玩家在找出三位数字中,电脑需要给出玩家一些提示信息,用以帮助玩家找出答案。

对于猜一个各个位数不等的三位数字,电脑需要在程序刚运行时,确定一个随机的三位数,且各个位数不相等。

而在玩家输入数字时,也需要检验玩家输入的数字是否满足条件,即一个各个位数不重复的三位数。

只有玩家输入正确的数字后,电脑才能进行比较数字的运算,如果玩家输入的数字和电脑的不相等,输出提示信息,并应重新读取玩家的数字进行判断,直到玩家放弃猜数字或数字猜对为止。

玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。

a表示位置正确且数字正确,b表示数字正确而位置不正确。

首先,由设计程序随机产生一个三位整数k,要求这个两位数字没有重复数字,且最高位不是0。

然后,玩家可以猜一个三位数字,根据玩家猜的数,与k比较,判断玩家猜的数字是否正确,同时,提示猜的数字中位置正确的数字个数m和数字正确而位置不正确的数的个数n,并以manb的形式输出(a表示位置和数字都正确,b表示数字正确而位置不正确)。

如果玩家猜了9次还不对,那么提示玩家“游戏失败!”。

1.2 需求分析电脑游戏的出现与1960年代电子计算机进入美国大学校园有密切的联系。

当时的环境培养出了一批编程高手。

1962年一位叫斯蒂夫·拉塞尔的大学生在美国dec公司生产的pdp-1型电子计算机上编制的《宇宙战争》(space war)是当时很有名的电脑游戏。

一般认为,他是电脑游戏的发明人。

1970年代,随着电子计算机技术的发展,其成本越来越低。

c随机数生成1到100

c随机数生成1到100

c随机数生成1到100
生成随机数步骤1:在要输入随机数的单元格中输入=rand()。

生成随机数步骤2:按enter键,就能产生0~1之间的随机数。

分解成随机数步骤3:当我们须要产生其他范围的随机数时,我们可以以rand函数做为基数,制订其他范围的随机数。

假设最轻数为x,最大数为y,随机数=x+rand()*(y-x)。

假设最轻数为30,最大数为60,随机数=30+rand()*(60-30)。

在单元格输出
=30+rand()*(60-30)。

生成随机数步骤4:按enter键,就能产生30~60之间的随机数。

分解成随机数步骤5:当我们须要产生整数时,我们须要使用randbetween函数,随
机数=randbetween(最小值,最大值)。

比如说必须产生1至50的随机整数,随机数
=randbetween(1,50)。

在单元格输出=randbetween(1,50)。

生成随机数步骤6:按enter键,就能产生1~50之间整数的随机数。

分解成随机数步骤7:当然我们可以混合采用,产生我们想的随机数。

比如说我们必
须产生三位小数的随机数。

随机数=randbetween(1,)/。

在单元格输出
=randbetween(1,)/。

生成随机数步骤8:按enter键,就能产生0,.~2之间三位小数的随机数。

3.excel 随机数字公式的采用教程
4.excel怎么使用randbetween随机数函数
5.excel怎么采用议和类函数
7.随机数函数randbetween在excel中的使用。

随机产生四位,任意位或者范围数字方法

随机产⽣四位,任意位或者范围数字⽅法⼀、⽤Math包中⽅法实现1.随机产⽣四位数[1000,9999]num=(int)(Math.random()*9000)+1000;Math.random()⽅法是产⽣double型[0,1)的数据,[0,1)*9000=[1,9001),⽤int类型强转后便是[0,8999], 因⽽可以得到1000~9999的四位随机数。

**PS:解释下double类型强转int类型,会导致double数据⼩数部分丢失Eg:double a=3.14529;int b=(int)a;b=3**2.随机产⽣规定范围内数字Eg:[1000,9999)num=(int)(Math.random()*8999)+1000;4.随机产⽣规定范围内数字Eg:(1000,9999]num=(int)(Math.random()*8999)+1000+1;5.随机产⽣规定范围内数字(1000,9999)num=(int)(Math.random()*8998)+1000+1;下⾯个⼈总结,⽤到的范围可能存在局限/*随机产⽣规定范围内数字[15,36]规律:num=(int)(Math.random()*(y-x+1))+x;*/num=(int)(Math.random()*22)+15;/*随机产⽣规定范围内数字(15,36)既[16,35]规律:num=(int)(Math.random()*(y-x-1))+x+1;*/num=(int)(Math.random()*20)+16;/*随机产⽣规定范围内数字[15,36)既[15,35]规律:num=(int)(Math.random()*(y-x))+x;*/num=(int)(Math.random()*21)+15;/*随机产⽣规定范围内数字(15,36]既[14,36]规律:num=(int)(Math.random()*(y-x+2))+x+1;*/num=(int)(Math.random()*23)+15;⼆、⽤Random类实现Java中提供了java.util.Random类,可以通过实例化⼀个Random对象创建⼀个随机数⽣成器,Random r=new Random();package method3;import java.util.Random;public class RandomDemo {public static void main(String[] args) {// TODO ⾃动⽣成的⽅法存根Random r = new Random();System.out.println(r.nextInt()); // 随机产⽣⼀个整数System.out.println(r.nextInt(10)); // 随机产⽣0到10(不包括10)范围内的⼀个整数System.out.println(r.nextDouble());// 随机产⽣⼀个双精度型值System.out.println(r.nextBoolean());// 随机产⽣⼀个布尔型值System.out.println(r.nextFloat());// 随机产⽣⼀个浮点型值System.out.println(r.nextGaussian());// 随机产⽣⼀个概率为⾼斯分布的双精度型值}}。

C#生成不重复的随机数介绍

C#生成不重复的随机数介绍我们在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复随机数的题目,在.net Framework中提供了一个专门用来产生随机数的类System.Random。

对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。

伪随机数是以相同的概率从一组有限的数字中选取的。

所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。

伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。

如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。

一般地,我们使用同系统时间有关的参数作为随机种子,这也是.net Framework 中的随机数发生器默认采用的方法。

我们可以使用两种方式初始化一个随机数发生器:第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:Random ro = new Random();第二种方法可以指定一个int型参数作为随机种子:int iSeed=10;Random ro = new Random(10);long tick = DateTime.Now.Ticks;Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> 32));这样可以保证99%不是一样。

之后,我们就可以使用这个Random类的对象来产生随机数,这时候要用到Random.Next()方法。

这个方法使用相当灵活,你甚至可以指定产生的随机数的上下限。

不指定上下限的使用如下:int iResult;iResult=ro.Next();下面的代码指定返回小于100的随机数:int iResult;int iUp=100;iResult=ro.Next(iUp);而下面这段代码则指定返回值必须在50-100的范围之内:int iResult;int iUp=100;int iDown=50;iResult=ro.Next(iDown,iUp);除了Random.Next()方法之外,Random类还提供了Random.NextDouble()方法产生一个范围在0.0-1.0之间的随机的双精度浮点数:double dResult;dResult=ro.NextDouble();但是用Random类生成题号,会出现重复,特别是在数量较小的题目中要生成不重复的的题目是很难的,参考了网上的一些方法,包括两类,一类是通过随机种子入手,使每一次的随机种子不同,来保证不重复;第二类是使用一些数据结构和算法。

python生成四位随机数

python⽣成四位随机数有些时候需要发送短信给⽤户⽣成四位随机数字,这⾥在python中我们可以根据python⾃带的标准库random和string来实现。

random1# random.choice2def choice(self, seq):3"""Choose a random element from a non-empty sequence."""4try:5 i = self._randbelow(len(seq))6except ValueError:7raise IndexError('Cannot choose from an empty sequence') from None8return seq[i]1# random.choices2def choices(self, population, weights=None, *, cum_weights=None, k=1):3"""Return a k sized list of population elements chosen with replacement.45 If the relative weights or cumulative weights are not specified,6 the selections are made with equal probability.78"""9 random = self.random10if cum_weights is None:11if weights is None:12 _int = int13 total = len(population)14return [population[_int(random() * total)] for i in range(k)]15 cum_weights = list(_itertools.accumulate(weights))16elif weights is not None:17raise TypeError('Cannot specify both weights and cumulative weights')18if len(cum_weights) != len(population):19raise ValueError('The number of weights does not match the population')20 bisect = _bisect.bisect21 total = cum_weights[-1]22 hi = len(cum_weights) - 123return [population[bisect(cum_weights, random() * total, 0, hi)]24for i in range(k)]1# random.sample23def sample(self, population, k):4"""Chooses k unique random elements from a population sequence or set.56 Returns a new list containing elements from the population while7 leaving the original population unchanged. The resulting list is8 in selection order so that all sub-slices will also be valid random9 samples. This allows raffle winners (the sample) to be partitioned10 into grand prize and second place winners (the subslices).1112 Members of the population need not be hashable or unique. If the13 population contains repeats, then each occurrence is a possible14 selection in the sample.1516 To choose a sample in a range of integers, use range as an argument.17 This is especially fast and space efficient for sampling from a18 large population: sample(range(10000000), 60)19"""2021# Sampling without replacement entails tracking either potential22# selections (the pool) in a list or previous selections in a set.2324# When the number of selections is small compared to the25# population, then tracking selections is efficient, requiring26# only a small set and an occasional reselection. For27# a larger number of selections, the pool tracking method is28# preferred since the list takes less space than the29# set and it doesn't suffer from frequent reselections.3031if isinstance(population, _Set):32 population = tuple(population)33if not isinstance(population, _Sequence):34raise TypeError("Population must be a sequence or set. For dicts, use list(d).")35 randbelow = self._randbelow36 n = len(population)37if not 0 <= k <= n:38raise ValueError("Sample larger than population or is negative")39 result = [None] * k40 setsize = 21 # size of a small set minus size of an empty list41if k > 5:42 setsize += 4 ** _ceil(_log(k * 3, 4)) # table size for big sets43if n <= setsize:44# An n-length list is smaller than a k-length set45 pool = list(population)46for i in range(k): # invariant: non-selected at [0,n-i)47 j = randbelow(n-i)48 result[i] = pool[j]49 pool[j] = pool[n-i-1] # move non-selected item into vacancy50else:51 selected = set()52 selected_add = selected.add53for i in range(k):54 j = randbelow(n)55while j in selected:56 j = randbelow(n)57 selected_add(j)58 result[i] = population[j]59return result从上⾯这三个函数看来,都可以在给定的⼀个数字集内随机产⽣四位数字。

用C语言产生随机数1

for( i = 0; i < 10;i++ ) printf( "%5.2f\n", rand()/32767.0);
} 而产生 1~100 之间的随机数可以这样写:
#include <stdlib.h> #include <stdio.h> #include <time.h> main( ) {int i; srand( (unsigned)time( NULL ) );
int a[100]={0}; int i,m; for(i=1; i<=99; ++i)
printf("%4d",a[i] );
srand( (unsigned)time( NULL ) );
or(i=1; i<=99; i++)
{
while(a[m=rand()%100+1]);
a[m] = i;
int i; randomize(); printf("Ten random numbers from 0 to 99\n\n"); for(i=0; i<10; i++)
printf("%d\n", rand() % 100); return 0; } 在《计算机常用算法》中有介绍随机数的生成算法 三 如何产生设定范围内的随机数
for( i = 0; i < 10;i++ ) printf( "%d\n", rand()%100+1);
} 二,三个通用的随机数发生器,推荐用第三个 函数名: rand 功 能: 随机数发生器 用 法: void rand(void);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档