>第 8 章 数组>数组应用实例:统计随机数>习题

mark mark_lhm@yahoo.cn
2009-06-22 11:57:56

这题也太没意义了,直接拿RANDOM数对10求余,然后再加10不就行了。


宋劲杉 songjinshan@akaedu.org
2009-06-22 23:27:43

简单吧。可惜你说错了。


Laciq 530107999@qq.com
2009-06-26 12:35:12

很多事情都没有想象中的那么简单……
以前我学这里的时候思考了好久……
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (void)
{
		int range; 
		
		srand(time(NULL));
		range = (20 - 10) + 1;
		 
		printf("%d", rand () % range + 10);
		printf(" %d", rand () % range + 10);
		printf(" %d\n", rand () % range + 10);
		
		return 0;
}


陈杨希 fusang12@126.com
2009-06-28 16:58:51

1楼的,你说错了。。你那样的话就不是调用函数了。。在下面gen_random()中输入的20就没有意义了。。
看我的,我的可以做到输出任意正数范围随机数~~宋老师看下对不对哦。。。
#include<stdio.h>
#include<stdlib.h>
#define N 20
int a[N];
void gen_random(int under_bound,int upper_bound)
{
    int i,b=(under_bound+upper_bound)/2;
    for(i=0;i<N;i++)
    {
        a[i]=rand()%upper_bound;
        if(a[i]<b)
        a[i]=a[i]+b;
    }
}
void print_random()
{
	int i;
	for (i = 0; i < N; i++)
		{printf("%d ", a[i]);
	printf("\n");}
}

int main(void)
{
	gen_random(10,20);
	print_random();
	return 0;
}


宋劲杉 songjinshan@akaedu.org
2009-06-28 17:47:43

我只是让用rand函数写一个简单的表达式,3楼的答案是正解


陈杨希 fusang12@126.com
2009-06-29 16:36:42

看来我的是画蛇了。。


smdy cslhc@qq.com
2009-08-08 22:27:05

一楼没看请,是10到20.模除11再加10.


码匠 code_smith@sohu.com
2009-09-03 20:23:17

宋老师,俺的随机数怎么和你的一样呢? 神!
世界什么时候变得,也不通知俺一声 


周建伟 zhoujianwei1986@126.com
2009-10-07 17:07:44

#include <stdio.h>
#include <stdlib.h>
#define N 20
int a[N];
void random(int bound,int length)
{int i;
 for(i=0;i<N;i++)
 a[i]=rand()%bound+length;
}
int main(void)
{int i;
 random(10,10);
 for(i=0;i<N;i++)
 printf("%d\t",a[i]);
 return 0;
}


周建伟 zhoujianwei1986@126.com
2009-10-07 17:28:30

请问宋老师,我的程序按照上几楼的同学说应该不对,但运行结果是对的呀!请指教!谢谢!


周建伟 zhoujianwei1986@126.com
2009-10-07 17:31:38

我想明白了


王文箫 wwp8912@163.com
2010-03-05 15:47:46

我懂了  一开始和一楼想的一样 ,没看清题目 ,
求 从[10,20]的随机整数整数,其中包括10 和20
除以11就是取其中的11位整数,换种想法是 设置它的宽度为11,在与“基数”相加 ,
真是厉害啊


by_cherish yuhao_213@163.com
2010-05-09 17:37:10

三楼陈杨希的代码有点问题,不信可以测试一下···


杜宇 dynju@qq.com
2010-06-16 10:46:14

#include <stdio.h>
#include <stdlib.h>
#define N 10000

int a[N];

void gen_rand(int down, int up)
{
    int bound = ( up - down ) + 1;
    int i;
    for(i = 0;i < N; i++)
        a[i] = rand() % bound + down;
}

int howmany(int value)
{
    int sum = 0;
    int i;
    for( i = 0; i < N; i++){
        if(a[i] == value)
            sum++;
    }
    return sum;
}

int main(void)
{
    gen_rand(10, 20);
    int i;
    for(i = 10;i <= 20; i++)
        printf("%d\n", howmany(i));
    return 0;
}


krison nickylans@163.com
2010-06-28 10:43:19

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

int main()
{
   int i,ran_num;
   srand((unsigned)time(0));
   for( i = 0; i < 10; i++)
  {
     ran_num = rand() % 6; 
     printf("%d \n",ran_num);
  }
   return 0;
}


krison nickylans@163.com
2010-06-28 10:45:46

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

int main()
{
   int i,ran_num;
   srand((unsigned)time(0));
   for( i = 0; i < 10; i++)
  {
     ran_num = rand(10) % 20; 
     printf("%d \n",ran_num);
  }
   return 0;
}

看清题目重新写一次了


王雪 giveareport@126.com
2010-07-15 21:42:36

哈哈,老师邪恶了,应该出10到19的

我也是看了王文萧的才明白过来


我是南瓜 dxhbiz@gmail.com
2010-12-29 23:04:06

根据陈杨希同学的要求,自己动手变了一次,希望大家多多指教。
#include <stdio.h>
#include <stdlib.h>
#define N 20

int a[N];

void get_rand(int max, int min)
{
        int i;
        for (i=0; i<N; i++)
        {
                a[i] = rand()%max+min;
        }
}

void print_rand(int b, int c)
{
        int max = b;
        int min = c;
        if (b<c)
        {
                max = c;
                min = b;
        }
        int upper = max-min+1;
        get_rand(upper, min);
        int i;
        for (i=0; i<N; i++)
        {
                printf("%d\n", a[i]);
        }
}

int main(void)
{
        int m,n;
        scanf("%d,%d", &m,&n);
        if (m==0 && n==0)
        {
                printf("对不起您输入有误!\n");
        }
        else
        {
                print_rand(m, n);
        }
        return 0;
}


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!