这题也太没意义了,直接拿RANDOM数对10求余,然后再加10不就行了。
简单吧。可惜你说错了。
很多事情都没有想象中的那么简单……
以前我学这里的时候思考了好久……
#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;
}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;
}我只是让用rand函数写一个简单的表达式,3楼的答案是正解
看来我的是画蛇了。。
一楼没看请,是10到20.模除11再加10.
宋老师,俺的随机数怎么和你的一样呢? 神! 世界什么时候变得,也不通知俺一声
#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;
}
请问宋老师,我的程序按照上几楼的同学说应该不对,但运行结果是对的呀!请指教!谢谢!
我想明白了
我懂了 一开始和一楼想的一样 ,没看清题目 , 求 从[10,20]的随机整数整数,其中包括10 和20 除以11就是取其中的11位整数,换种想法是 设置它的宽度为11,在与“基数”相加 , 真是厉害啊
三楼陈杨希的代码有点问题,不信可以测试一下···
#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;
}
#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;
}#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;
}
看清题目重新写一次了哈哈,老师邪恶了,应该出10到19的 我也是看了王文萧的才明白过来
根据陈杨希同学的要求,自己动手变了一次,希望大家多多指教。
#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将会出现在本书前言的致谢中。再次感谢您的宝贵意见!