1.定义一个一维数,数组大小为24。

2.产生0~23的随机数。

3.将产生的随机数存入i数组,要求数组中的每个数据不能相同。

4.补充说明,这个子程序要求每次调用后,这个数组里面就 存放了0~23这些数据,而且这些数据没有重复的。

5.注意,C语言有随机数函数,可以用函数产生随机数。RAND(N)

#include <stdio.h>
#include <time.h>
#define ArrayMaxItem 24

int RandTest()
{
int i = 0;
int ret = 0;
time_t t;
for (i=0; i<10; i++)
{
srand((unsigned) time(&t)*10);
ret = rand();
//ret = rand((unsigned) time(&t));
printf("ret:%d\n", ret);
}
return 0;
}

int RandArray(int *a, int n)
{
int i = 0;
int t = 0;
time_t mytime;
struct tm *timeinfo;

for (i=0; i<n ;i++)
a[i] = 0;

/*only n-1 posions need to by seted*/
for (i=0; i<n-1; 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<n; i++)
{
printf("a[%d]:%d\n", i, a[i]);
}
return 0;
}

int main()
{
int a[ArrayMaxItem];
RandArray(a, ArrayMaxItem);

//RandTest();
return 0;
}

1.随机数的使用过程:

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

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

2.获得系统时间:

#include <stdio.h>
#include <time.h>
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

C语言 将产生的随机数存入数组,数据不能相同的更多相关文章

  1. js获取100个随机数存入数组

    . //js获取100个随机数存入数组 $(function () { var arr = []; ; var str = ""; ) { , ); ) { arr[num] = ...

  2. c语言输入一行未知个数数字存入数组

    一直有个疑问输入一行数字存入数组时若不知道数字的个数怎么办,最容易想到的办法就是接收字符然后转化为数字,但这样太过麻烦. 今天上网查了下,说可以用ungetc()函数将字符送回输入流,在这里总结归纳一 ...

  3. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  4. php 将查询出的数组数据存入redis

    我们从数据库查询出来的数据一般为数组的形式, 而redis是不支持存入数组的, 一种解决办法是将数组转化为json数据,再将json存入redis,之后取出时再将json转化为php数组. 但将取出的 ...

  5. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  6. C# Hashtable中存入数组、List

    哈希表中存入数组示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  7. java随机数与数组的使用。

    java随机数与数组的使用.    一:题目 二 代码:  public class Students {    int number;  // 学号    int State ;   // 年级   ...

  8. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  9. 第二十三节:Java语言基础-详细讲解函数与数组

    函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...

随机推荐

  1. git克隆项目到一个非空目录

    这只是记录: 1. 进入非空目录,假设是 /workdir/proj1 2. git clone --no-checkout https://git.oschina.net/NextApp/platf ...

  2. windows 10 笔记本关机不断电解决

    右键我的电脑-->管理-->设备管理器-->系统设备 找到Intel(R) Management Engine Interface  双击打开,禁用,确定,完事 原因,该驱动11.0 ...

  3. 使用UI Automation实现自动化测试 --微软提供的控件Pattern

    微软提供的控件Pattern System.Windows.Automation 命名空间 System.Windows.Automation.BasePattern 为控件模式类提供基实现 Syst ...

  4. a mystrious max subquence sum

    #include<cstdio>#include<cstring>const int maxn=100005;int buf[maxn];int main(){ freopen ...

  5. C#使用Cookie方法

    //写入 protected void Button1_Click(object sender, EventArgs e) { HttpCookie cookie=new HttpCookie(&qu ...

  6. hdu2444

    #include <stdio.h> #include <string.h> #define black 1 #define white -1 ]; ]; ][]; int n ...

  7. 1Android系统移植与驱动开发概述

    1.Android系统架构分为四层,从下至上依次为Linux内核层,C/C++代码库.Android SDK API.应用程序,要熟悉每一层的内容以及功能: 2.Android移植分为应用移植和系统移 ...

  8. sed的惯常用法

    1:注释掉某一行这个经常会遇到的,把配置文件里某一行注释掉.让他不起作用.sed -i -e ’121 s/^/#/’ /usr/local/apache2/conf/httpd.conf上面一行命令 ...

  9. 使用eclipse与jLink V8调试exynos 4412 u-boot

    /** ****************************************************************************** * @author    Maox ...

  10. Clearing Search Values

      Use the SearchClear() method which is part of the Field class to clear search values on a particul ...