| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 377 人关注过本帖
标题:一起来探讨
只看楼主 加入收藏
koma仔
Rank: 1
来 自:"><a>s</a
等 级:新手上路
帖 子:15
专家分:8
注 册:2015-3-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
一起来探讨
20:36:07
【中学生】(青ˉ︶ˉˉ︶ˉ年) 2015/3/23 20:36:07
}*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int i, a[100] = {0}, b = 3;
    srand((int)time(0));//设定随机种子
    while (b--)
    {
        int c = rand() % 100;
        if(!a[c])
        {
            printf("%d ", c);
            a[c] = 1;

        }
    }
    return 0;
}







求三个随机数      可是此段代码意思是?????int c = rand() % 100;
        if(!a[c])
        {
            printf("%d ", c);
            a[c] = 1;

【中学生】(青ˉ︶ˉˉ︶ˉ年) 2015/3/23 20:37:16
求解完全    if(!a[c])          a[c] = 1; 这意思是  真不太看明白
搜索更多相关主题的帖子: include 中学生 return 
2015-03-23 20:59
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:10 
int c = rand() % 100   就是随机产生0到100之间的随机数,
 if(!a[c]) 就是当  a[c] 不存在时,其实就是表示a[100]中的某个数,如果这个数不存在
那么就令  a[c] =1,并且打印出随机数c.

授人以鱼,不如授人以渔
2015-03-23 21:13
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
    int i = 0;
    int a[100] = {0}; //数组a(从a[0] ~ a[99] 值被初始化为 0
    int b = 60, c;
    srand((int)time(0));

    while(b--) { //b的取值是个有意思的事 这里取值为3 好象可以正好打印出3个随机值 实际上是只是没碰上小概率事件 比如把b赋值为50 60 再试试 从这一点来说 原始代码有漏洞
        c = rand() % 100; //随机函数每运行一次变量c被赋值为0 ~ 99 之间的一个整数

        if(!a[c]) { //!a[c] 可以改写为 0 == a[c]
            printf("%02d ", c); // 首次被随机到的数 将被打印
            if(++i % 10 == 0) printf("\n"); //打印10个数换行一次
            a[c] = 1; //为避免再次被打印 已经被随机到的数 其对应的数组元素被赋值为1 这样若是再次随机到这个数 if语句由于条成不成立(a[c] == 1) 将不打印 c的值
        }
    }
    puts("");

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-23 21:25
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
这其实是一个空间换时间求不重复随机数的程序

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
    int i = 0, j, a[100] = {0};
    srand((unsigned int)time(NULL));

    while(i < 100) {
        j = (int)(100.0 * rand() / (RAND_MAX + 1.0));

        if(!a[j]) {
            printf("%02d ", j);
            a[j] = 1;
            if(++i % 10 == 0)
                printf("\n");
        }
    }
    puts("");

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-23 21:33
koma仔
Rank: 1
来 自:"><a>s</a
等 级:新手上路
帖 子:15
专家分:8
注 册:2015-3-9
收藏
得分:0 
回复 2楼 执笔画江山
谢谢
2015-03-23 22:35
koma仔
Rank: 1
来 自:"><a>s</a
等 级:新手上路
帖 子:15
专家分:8
注 册:2015-3-9
收藏
得分:0 
回复 2楼 执笔画江山
如果是可以随机出来相同的数   那岂不是就不用 if(!a[c])
2015-03-23 22:41
koma仔
Rank: 1
来 自:"><a>s</a
等 级:新手上路
帖 子:15
专家分:8
注 册:2015-3-9
收藏
得分:0 
回复 4楼 longwu9t
xie    如果想随机出来  相同的数  岂不是   if[!a[c]]   注释掉即可的啦
2015-03-23 22:42
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
回复 6楼 koma仔
不是 去掉time函数就行了。time函数就是保证你得数不同。你还是先好好学习下rand函数吧

授人以鱼,不如授人以渔
2015-03-23 23:09
快速回复:一起来探讨
数据加载中...
 
   



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

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