标题:random和rand
只看楼主
xiaona521
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-23
 问题点数:0 回复次数:21 
random和rand

rand是个伪随机数,拿当前时间做种子,获取的数是4位数,如何随机获取1到6,且1到6这6个数机会相等,
random(int n)是获取[0,n)的随机数, 我机器运行的时候一直提示 'random' : undeclared identifier
请教高手什么原因 ,头文件有<stdlib.h>了
我搜了下他们的用法,机器运行不了random的,也没能弄明白!先谢了

搜索更多相关主题的帖子: rand 
2006-12-07 20:31
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
#define random(x) (rand()%x)

加上这个就行

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-07 21:01
xiaona521
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-23
得分:0 
还是不行 估计是我没装好,我的MSDN都没 真惨,下次重装下

2006-12-07 21:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
random()一样也可以的.
random(x)<==>(rand()%x)

可能是你没装好了,你先用别的编译器试一下.

倚天照海花无数,流水高山心自知。
2006-12-07 21:23
xiaona521
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-23
得分:0 

对了 斑竹我上次问了个动态数组的问题 现在写得差不多了 可不知道为什么输入的第一个数字会变成了野数,后面的数都可以打出来,程序:帮我调试下,我找了一下午,不知道哪出问题了:
#include <stdio.h>
#include <stdlib.h>


void main()
{
int *p=NULL,m,*q=NULL;
int n=0,i;
p=q=(int *)malloc(2*sizeof(int)); //申请存放个数和结束标志空间
// p++;
while(scanf("%d",&m)!=0) //输入字符则结束循环
{
q=(int *)realloc(q,sizeof(int));
p++;
*p=m;
n++;
}
*q=n; //动态数组第一个元素为数字个数
for(i=0;i<=n;i++)
printf("%d ",*(q+i));
}


2006-12-07 21:26
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用xiaona521在2006-12-7 21:26:01的发言:

对了 斑竹我上次问了个动态数组的问题 现在写得差不多了 可不知道为什么输入的第一个数字会变成了野数,后面的数都可以打出来,程序:帮我调试下,我找了一下午,不知道哪出问题了:
#include <stdio.h>
#include <stdlib.h>


void main()
{
int *p=NULL,m,*q=NULL;
int n=0,i;
p=(int *)malloc(sizeof(int)); //申请存放个数和结束标志空间
// p++;
q=p;
while(scanf("%d",&m)!=0) //输入字符则结束循环
{
//q=(int *)realloc(q,sizeof(int));//重复分配空间

*p=m;
p++;
n++;
}
//*q=n;//毫无意义 //动态数组第一个元素为数字个数
for(i=0;i<n;i++)
printf("%d ",*(q+i));
}


倚天照海花无数,流水高山心自知。
2006-12-07 21:43
xiaona521
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-23
得分:0 
//q=(int *)realloc(q,sizeof(int));//重复分配空间 不分配空间怎么存直,我是输入一个数字就申请一个空间存放,为的是不申请多的空间,当然这个是我自己的意思,申请多点空间不会有什么,另外, //*q=n;//毫无意义 是把动态数组的第一个元素存放我输入的数字个数,怎么会毫无意义呢?

2006-12-07 21:57
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

可能是我理解错了吧,但重复分配也是p分配吧.关键是p每分配一个(p的地址就会改变),它们不是顺序存起来的.你怎么找以后输入的值.


倚天照海花无数,流水高山心自知。
2006-12-07 22:05
xiaona521
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-23
得分:0 
[QUOTE]

void main()
{
int *p=NULL,m,*q=NULL;
int n=0,i;
p=(int *)malloc(sizeof(int)); //申请存放个数和结束标志空间
// p++;
q=p;
while(scanf("%d",&m)!=0) //输入字符则结束循环
{
//q=(int *)realloc(q,sizeof(int));//重复分配空间 realloc保证了分配的空间和前面申请的连续

*p=m;
p++;
n++;
}
//*q=n;//毫无意义 //动态数组第一个元素为数字个数
for(i=0;i<n;i++)
printf("%d ",*(q+i));
}

[/QUOTE]

2006-12-07 22:08
xiaona521
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-23
得分:0 
斑竹你可以调试下我上面的代码,也许会知道快些

2006-12-07 22:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-107968-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031015 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved