| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2278 人关注过本帖, 2 人收藏
标题:只想搞懂这个题目!!
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
我一直都搞不懂随机数`````

首先是不明白``随机数函数````的原理``

第2是``完全用不来随机数函数``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-12-28 10:45
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
哈哈,真的假的呀,版主?

努力才会成功!
2007-12-29 11:19
MILLARBUDDHA
Rank: 1
来 自:陕西
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-12-27
收藏
得分:0 
回复 4# 的帖子
能不能把这道题的意思说详细一下,实在有点迷茫,看不懂
2007-12-29 12:46
gongjie0708
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-12-12
收藏
得分:0 
回复 5# 的帖子
同意你的  以前用过你的思想 做过类似的统计
2007-12-29 14:38
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i, j;
    int ar[10] = {0};
   
    for(i = 0; i < 10; ++i)           // 10个不同的种子
    {
        srand((unsigned int)(i + 1)); // 设定种子
        for(j = 0; j < 10; ++j)
            ar[j] = 0;                // 初始化统计数组

        for(j = 0; j < 1000; ++j)     // 产生1000个1到10范围内的随机数,
            ++ar[rand() % 10];                          // 并统计出现次数

        for(j = 0; j < 10; ++j)       // 打印产生的随机数的次数
            printf("%4d ", ar[j]);
        putchar('\n');
    }
   
    getchar();
    return 0;
}


[[italic] 本帖最后由 cosdos 于 2007-12-30 12:36 编辑 [/italic]]

—>〉Sun〈<—
2007-12-30 00:30
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
回复15#

你是循环10次,把0-9按顺序当成种子,让它产生随机数的。

如果只能用srand((unsigned)time(NULL));采用系统时钟。这个题怎么样去算呢!

努力才会成功!
2007-12-30 09:07
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
有一个地方的注释标错了,现在修改,并使用了 time()
time() ,其实和上面的代码一样。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int i, j;
    int ar[10] = {0};
   
    for(i = 0; i < 10; ++i)           // 10个不同的种子
    {
        srand((unsigned int)time(NULL)); // 设定种子,使用了 time()
        for(j = 0; j < 10; ++j)
            ar[j] = 0;                // 初始化统计数组

        for(j = 0; j < 1000; ++j)     // 产生1000个1到10范围内的随机数,
            ++ar[rand() % 10];                          // 并统计出现次数

        for(j = 0; j < 10; ++j)       // 打印产生的随机数的次数
            printf("%4d ", ar[j]);
        putchar('\n');
    }
   
    getchar();
    return 0;
}

—>〉Sun〈<—
2007-12-30 12:39
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
哎````晕````

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-12-30 12:52
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
原帖由 [bold][underline]cosdos[/underline][/bold] 于 2007-12-30 12:39 发表 [url=http://bbs.][/url]
有一个地方的注释标错了,现在修改,并使用了 time()
time() ,其实和上面的代码一样。

#include
#include
#include

int main(void)
{
    int i, j;
    int ar[10] = {0};
   
    for(i = 0; i < 10; ++i)        ...

这样的话,随机数会不会大多数都一样呀,因为在同一时间,比如一秒,它产生的是同一个数呀,也就是同一个种子呀!

努力才会成功!
2008-01-02 13:19
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
正如我说的一样呀,看看你的程序的结果呀:
针对 17# 的结果:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int i, j;
    int ar[10] = {0};   
    for(i = 0; i < 10; ++i)           // 10个不同的种子
    {
        srand((unsigned int)time(NULL));// 设定种子,使用了 time()
        printf("%-2d:",i+1);           //此外在这里加了一条语句,为了看得清楚。
        for(j = 0; j < 10; ++j)
            ar[j] = 0;                // 初始化统计数组

        for(j = 0; j < 1000; ++j)     // 产生1000个1到10范围内的随机数,
            ++ar[rand() % 10];                          // 并统计出现次数

        for(j = 0; j < 10; ++j)       // 打印产生的随机数的次数
            printf("%4d ", ar[j]);
        putchar('\n');
    }
   
    getchar();
    return 0;
}

努力才会成功!
2008-01-02 13:29
快速回复:只想搞懂这个题目!!
数据加载中...
 
   



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

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