c语言怎么存放随机整数到数组,C语言 将产生的随机数存入数组,数据不能相同...

= 0;

/*only n-1 posions need to by seted*/

for (i=0; i

{

while(a[t=rand((unsigned)time(&mytime))%n] != 0);

a[t] = n-i-1;

timeinfo = localtime(&mytime);

printf("time:%s a[%d]:%d\n", asctime(timeinfo), t, a[t]);

}

for (i=0; i

{

printf("a[%d]:%d\n", i, a);

}

return 0;

}

int main()

{

int a[ArrayMaxItem];

RandArray(a, ArrayMaxItem);

//RandTest();

return 0;

}

1.随机数的使用过程:

网上说要先调用srand(unsigned seed)函数设置随机数种子,再调用rand(void)产生随机数,但我用系统时间来作为种子,产生了十次随机数值都是一样的。

之后采用上面代码所用的方法,直接将种子传入rand()函数中,调用十次产生不同的值,但每次调用产生的值是同一组。

2.获得系统时间:

#include

#include

int main()

{

time_t rawtime;

struct tm * timeinfo;

time ( &rawtime );

timeinfo = localtime ( &rawtime );

printf ( "The current date/time is: %s", asctime (timeinfo) );

return 0;

}

time_t // 时间类型(time.h 定义)

struct tm {    // 时间结构,time.h 定义如下:

int tm_sec;

int tm_min;

int tm_hour;

int tm_mday;

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

}

time ( &rawtime );   // 获取时间,以秒计,从1970年1月一日起算,存于rawtime

localtime ( &rawtime );   //转为当地时间,tm 时间结构

asctime()   // 转为标准ASCII时间格式:

//就是直接打印tm,tm_year 从1900年计算,所以要加1900,月tm_mon,从0计算,所以要加1

3.思路:

用随机数产生0~n-1范围内的数组下标,当对应的数不为0,则置为n-i-1,这样,只需要置n-1个,最后一个本来就是0。

产生0~n-1范围内的随机数的方法是对rand()产生出来的随机数对n取余。

4.运行结果:

time:Tue Apr 19 12:28:42 2016

a[7]:23

time:Tue Apr 19 12:28:42 2016

a[22]:22

time:Tue Apr 19 12:28:42 2016

a[9]:21

time:Tue Apr 19 12:28:42 2016

a[19]:20

time:Tue Apr 19 12:28:42 2016

a[17]:19

time:Tue Apr 19 12:28:42 2016

a[10]:18

time:Tue Apr 19 12:28:42 2016

a[12]:17

time:Tue Apr 19 12:28:42 2016

a[13]:16

time:Tue Apr 19 12:28:42 2016

a[2]:15

time:Tue Apr 19 12:28:42 2016

a[11]:14

time:Tue Apr 19 12:28:42 2016

a[18]:13

time:Tue Apr 19 12:28:42 2016

a[4]:12

time:Tue Apr 19 12:28:42 2016

a[16]:11

time:Tue Apr 19 12:28:42 2016

a[8]:10

time:Tue Apr 19 12:28:42 2016

a[15]:9

time:Tue Apr 19 12:28:42 2016

a[21]:8

time:Tue Apr 19 12:28:42 2016

a[14]:7

time:Tue Apr 19 12:28:42 2016

a[6]:6

time:Tue Apr 19 12:28:42 2016

a[5]:5

time:Tue Apr 19 12:28:42 2016

a[1]:4

time:Tue Apr 19 12:28:42 2016

a[23]:3

time:Tue Apr 19 12:28:42 2016

a[20]:2

time:Tue Apr 19 12:28:42 2016

a[3]:1

a[0]:0

a[1]:4

a[2]:15

a[3]:1

a[4]:12

a[5]:5

a[6]:6

a[7]:23

a[8]:10

a[9]:21

a[10]:18

a[11]:14

a[12]:17

a[13]:16

a[14]:7

a[15]:9

a[16]:11

a[17]:19

a[18]:13

a[19]:20

a[20]:2

a[21]:8

a[22]:22

a[23]:3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值