用C语言编程要求:实现excel n个随机数求和(n需要自己输入)的排序. 提示:random()函数,for循环,输入输出语句.

在C语言中怎样随机取数?为什么有random函数每次取数都是一样的?
在C语言中怎样随机取数?为什么有random函数每次取数都是一样的?
09-01-07 &
SRAND(INT)用来设种子,然后每次RAND()返回一个随机值 种子最好是每次都不同的,否则你每次得到的都是同样的一系列伪随机数,通常让种子和当前时间相关,比如 SRAND((UNSIGNED)TIME(0));
请登录后再发表评论!c语言random函数怎么用
日 16:53 来源:本站整理 作者:胡哥 (0)
#include &iostream&
#include &time.h&
#define MAX 100
int main(int argc, char* argv[])
{srand( (unsigned)time( NULL ) ); //srand()函数产生一个以当前时间开始的随机种子
&&&&&& for (int i=0;i&10;i++)
&&&&&&& cout&&rand()%MAX&&&&&&&&&& //MAX为最大值,其随机域为0~MAX-1
&&&&&& return 0;
rand()通常的使用方法是这样的:
rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。
这样,如果你要产生0~10的10个整数,可以表达为:
int N = rand() % 11;
这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样:
int N = 1 + rand() % 11;
总结来说,可以表示为:
a + rand() % n
其中的a是起始值,n是整数的范围。
若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依此类推。
通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。
如大家所说,还可以包含time.h头文件,然后使用srand( time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)。
random函数详解
开始是介绍一下random()函数和Math.random()函数,然后介绍一些由此引出的自定义函数.对于如何实战出一些效果,那需要想象的翅膀和其它AS基础的支持.而算法本身并不困难.最后我会介绍一个简单效果.希望能启发读者的思维.
1、random(number)函数介绍
见帮助文档,简单再提一下,random(number)返回一个0~number-1之间的随机整数.参数number代表
trace(random(5));
//复制到主场景第一帧.
2、Math.random()
见帮助文档。返回一个有14位精度的0~1之间的数,注意没有参数。听说MM是推荐用这个函数的,而不是上面那个.
trace(Math.random());
//复制到主场景第一帧.
3、自定义的函数
MM给我们的就这两个函数了,但是需求与供给总是存在矛盾。我们有时候需要的随机数可不是这么简单。
比如我们想返回一个有两位小数的随机数,返回两个数之间的随机数,返回字母随机数,返回多个随机数等等,
这些都需要我们自己编写函数来实现。下面的代码直接复制到主场景第一帧就可以调用了。注意有的函数需要入口参数。
# 返回一个共有n位数,其中m位是小数的随机数
function randomXiao(n,m){
var a = Math.pow(10, n+m);
var b = random(a);
return b=b/Math.pow(10, m);
可以用trace(randomXiao(3,2));实验一下。这个函数简单。Math.pow(n,m)用于返回一个以n为底,m为指数的数。乘方!
# 返回一个n到m之间的随机数
function randomNm(n,m){
return random(m-n+1)+n;
之所以用random(m-n+1)是因为随机数的范围是m-n,加上1使得m也能在里面。加上n保证随机数以n为下限。
加上判断使函数更完整。另外,如果要返回一个负数随机数,也可以用randomNm(n,0);当然,我想更一般的是用-random(n);
# 返回一个字母
function randomAscii(){
var c = String.fromCharCode(random(26)+65);
if(random(2)){
return c.toLowerCase();
返回一个不区分大小写的随机字母
如果要返回大写,把if条件句去掉就行了。如果要返回小写,可以把条件句改为恒成立,或者去掉条件,最后一句改为:
return c.toLowerCase(); String.fromCharCode(number)函数返回number代表数字的ASCII码。
toLowerCase()用于将大写字母转为小写。
# 返回一个n到m之间的k个互异随机数
function randomKdiffer(n,m,k){
arrayK = [];
var i = 0;
while (i & k) {
a = random(m-n+1)+n;
for (var j = 0; j & j++) {
if (a == arrayK[j]) {
if (j == i) {
arrayK[i] =
return arrayK;
数组arrayK中的元素即为所得值。注意到我们借用了random(m-n+1)+n来返回一个n~m的随机数。所以m本身也会被返回。
如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把入口参数的K值赋为k=random(m-n);
随机返回不一定互异的数,把判断去掉就可以了,注意i++不要漏掉。这里不再给出。
#指定若干个字符/数字,然后从中随机返回一个(或多个)字符/数字,可以把原字符赋给一个数组,再根据数组的下标来
决定返回值。这里不再举出函数,大家可以自己尝试。
#另需指出,对于随机设定一个MC的颜色值,我们较多采用mcColor.setRBG(random(0xFFFFFF));下面的例子中会有说明。
如果要指定一个色域,可以采用上面给出的函数。如果对Color对象不太了解的可以查帮助,这里不作讨论。
以上函数算是由random直接衍生的,下面再举个例子,可以说是衍生函数的衍生函数,其中会直接用到上面给出的函数,请注意。
#返回一个指定长度的随机大写英文字符串
function randomString(n){
var arrayA = randomKdiffer(1, 26, n);
var arrayB = &&;
for (var i = 0; i & i++) {
c=String.fromCharCode(arrayA[i]+64);
/* if(random(2)){
c=c.toLowerCase();
arrayB = arrayB+c;
return arrayB;
注意到StringCharCode方法,如果要写成小写,则把返回值写成arrayB.toLowerCase();如果返回一个不区分大小写的字符串,
则把注释去掉.如果要返回一个不指定长度的字符串,则可以把入口参数赋值为random(n);这样只指定其上限.此函数也可以用
randomAscii函数实现,留给大家自己思考.
#在几个区域中选出随机数
比如,在1~20,45~70这两段数之间选取一个随机数。因为区域数未定,所以直接用一个确定的函数编写多有不便,
我们要使用的方法就是用switch语句进行定向,具体的我们给出一个函数,返回一个1~20,45~70内的数,其它区域读者请自行更改。
function randomArea(){
var a=random(2);
switch(a){
return randomNm(1,20);
return randomNm(45,70);
注意,我们并没有写入口参数,而是直接在函数中就确定了是两段数,而且范围也是确定的。如果是三段,则改为a=random(3);
同样增加一个case就可以了。当然,你也可以把第段数的范围设为入口参数,这里就不再举例了。但是这样做可能会使参数增多,
我个人是不太喜欢一个需要很多参数的函数的。类似的,我们也可以随机返回一个字母段或几个字母段或者字母加数字段的一个数。
方法也只是前几个函数的一个结合。这里仅举一例,返回指定的大写字母段的一个随机字母。
提醒一下,小写字母的ASCII码a~z分别对应97~122.
function randomAArea(a,b){
if (ord(a) &= ord(b) && 65&=ord(a) && ord(b) &= 90) {
return String.fromCharCode(randomNm(ord(a), ord(b)));
其中用到一个函数ord(char),这是一个不推荐的函数.用于返回char字符的ASCII码。
如果大家想在任何地方调用函数,则需要稍稍变一下,把我们写的函数改变为全局函数.这样就可以不用标明路径而自如地向调用系统
函数一样了.方法如下.例如:函数randomXiao如果要声明为全局函数,需要把第一行改为:
_global.randomXiao=function(n,m){
//statment
对全局函数的概念不很清楚的朋友不用被这个名词吓倒.
&&& 这样改了函数第一行之后,在任何地方,比如在一个MC里,直接用(对,直接用,不用加_root路径了)randomXiao(n,m)就可以了.
&&& 有兴趣的朋友还可以根据这些函数衍生其它函数,比如一个有数字和英文字母的随机字符串。说了这么多,为什么没有说Math.random()呢?
&&& 因为这个方法太&专业&了,在普通做效果的过程中还是用random(n)好一点. MM为什么推荐我不得而知
相关技术文章:
相关资料下载:
上周热点文章排行榜
上周资料下载排行榜
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
创新实用技术专题
在28nm FPGA战场上,Xilinx和Altera已经展...C语言排序(冒泡,快速排序和简单选择法排序)问题C语言排序(冒泡,快速排序和简单选择法排序)问题编程要求:排-知识宝库
你可能对下面的信息感兴趣上机题参考答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上机题参考答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩39页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢具体的编程题目。c语言的_百度知道
具体的编程题目。c语言的
ave分别指向最大值。其中data指向给定数据的数组的指针,输出比较结果、最小值和平均值。(2) 写一个函数void maxMinAver(int *data、4个实参都是对普通的简单变量的某种操作、min,最后一个实参是数组的大小, int *max、插入法,float * ave:交换法,
求一组数据的最大值、最小值和平均值, int *min,max,size是数组的大小。纪录排序过程中数据比较和交换的次数,第2、3(1) 编一程序对2种排序方法进行比较、冒泡法四种方法选2、选择法。具体比较方法是随机生成一组(≥300个)的100以内的整数数据。要求第一个实参是数组,测试之,int size),用选定的2种排序方法进行排序
提问者采纳
count2); data[i])
*min = data[i], a[i]); } *ave = (*ave) /
while (temp &lt.h&
for (j = i + 1; for (i = 0,
a[pos] = a[i];
b[j + 1] = temp, &data[i]);nmin=%d\ i & j &/ } for (i = 0; a[j])
temp = a[j]第一题; int i, data[i])
*max = data[i];%d&
j = i - 1, int * for (i = 1; srand(time(0)),#include & for (i = 1, int size){
count2++:%d\ int count1 = 0; N; i++)
/n&quot:#include &#define N 300void main(){ int a[N];stdio, &n交换次数, &\;%d & i++)
/;n&quot, int *
*ave += data[i], b[i]); } printf(&quot, i &
if (*min &= 0)
b[j + 1] = b[j];&#47, &void maxMinAver(int *; N;
pos =;%d &quot, N;
count1++; i & int count2 = 0, b[N], count1), } for (i = 0;n& i & printf(&max=%d\ i &
int i, 10);nave=%f&#92, ave);; i++) {
scanf(& i++) {
a[i] = b[i] = rand() % 100; i & for (i = 0; i++) {
printf(& *max = *min = *ave = data[0];:#include & } maxMinAver( N; N;插入排序 {
temp = b[i];}int main(){ int data[10], float * j++)
if (temp & N; i++) {
if (*max & 10;
a[i] =选择排序 {
temp = a[i]; } for (i = 0; } printf(&}第二题; i & b[j] && j &
pos = i++) {
printf(&quot:%d&#92.h&n交换次数;&#92.h& return 0, min
其他类似问题
为您推荐:
您可能关注的推广
c语言的相关知识
其他2条回答
作业还是自己做吧
#include &stdio.h&
#include &time.h&
#include &stdlib.h&
void SimpleSelectSort(int arr[], int n, long *compare, long *swap);
void BubbleSort(int arr[], int n, long *compare, long *swap);
void GetRandomNumber(int arr[], int n, int max);
void main()
int max = 100;
int n = 300;
int arr[300];
long compare,
GetRandomNumber(arr, n, max);
printf(&Initial Array : \n&);
for(i=0; i&n; i++)
if(i&0 && i%25==0)
printf(&\n&);
printf(&%-3d&, arr[i]);
printf(&\n&);
SimpleSelectSort(arr, n, &compare, &swap);
printf(&After Simple ...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 matlab编程产生随机数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信