题目描述
用线性同余法生成随机数序列的公式为:
r_k = (multiplier * r_k-1 + increment) % modulus
序列中的每个数r_k都可以由它的前一个数r_k-1计算出来。例如,如果有:
r_k = (25173 * r_k-1 + 13849) % 65536
则可以产生65 536个各不相同的整型随机数。设计一个函数作为随机数生成器,生成1位或2位的随机数。
利用这个随机数生成器,编写一个小学生学习四则运算的练习程序,要求:
① 可以进行难度选择,一级难度只用1位数,二级难度用2位数;
② 可以选择运算类型,包括加、减、乘、除等;
③ 给出错误提示;
④ 可以统计成绩。
输入
根据程序提示给出回应/答案
输出
相关提示和结果(每个提后和结果后面需要endl)
样例输入
Y 8 1 k + 5 12 12 10 1 5 12 12 15 0
样例输出
Start now? (Y or N)
Please enter difficulty (1 or 2):
Input error, please re-enter!
Please enter difficulty (1 or 2):
Please enter the type of operation (+, -, *, /):
Input error, please re-enter!
Please enter the type of operation (+, -, *, /):
2+3=
You're right, get 10 points.
8+4=
You're right, get 10 points.
5+7=
You're right, get 10 points.
9+6=
answer incorrectly.
1+0=
You're right, get 10 points.
2+3=
You're right, get 10 points.
8+4=
You're right, get 10 points.
5+7=
You're right, get 10 points.
9+6=
You're right, get 10 points.
1+0=
answer incorrectly.
Your grades are: 80
#include <stdio.h>
#include <time.h>
static unsigned long rand_seed;
void mysrand (unsigned long int);
void myrand ();
int
main (void)
{
int i;
mysrand (time (NULL));
for (i = 0; i < 100; i++)
{
myrand ();
}
return 0;
}
void
mysrand (unsigned long seed)
{
rand_seed = seed;
}
void
myrand ()
{
rand_seed = (rand_seed * 16807L) % ((1 << 31) - 1);
printf ("%ld ", rand_seed);
}
http://blog.csdn.net/memray/article/details/8932518
mark
另外,
凯儿啊 你这货。。。。。。