㈠ 用C语言写出一道关于随机数的编程题
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
#define NUMLEN 69
#define BigNum char *
void bigNumCpy(BigNum a, const BigNum b)//大数间复制
{
memcpy(a, b, NUMLEN);
}
int add(const BigNum a, const BigNum b, BigNum c)//大数加法
{
int i;
int t1 = 0, t2;
BigNum d = new char[NUMLEN];
for(i=0;i<NUMLEN;i++)
{
t2 = a[i] + b[i] + t1;
d[i] = t2 % 10;
t1 = t2 / 10;
}
bigNumCpy(c, d);
return t1;
}
void covertInt(int x, BigNum a)//将整数转换为大数
{
int i;
for(i=0;i<NUMLEN;i++)
{
a[i] = x % 10;
x /= 10;
}
}
int numLen(const BigNum a)//大数的位颂旅数
{
int i;
for(i = NUMLEN - 1; i >= 0 && a[i] == 0; i--);
return i+1;
}
int covert(BigNum a, const BigNum b)//将大数的顺序调换
{
char c[NUMLEN];
memset(c, 0, NUMLEN);
int len = numLen(b);
int i, j;
for(i = 0, j = len - 1; i < len; i++, j--) c[i] = b[j];
bigNumCpy(a, c);
return len;
}
void printBigNum(BigNum a, int mode = 0)//大数显示
{
int i;
int flag = 1;
for(i=NUMLEN-1;i>=0;i--)
{
if(flag == 1 && a[i] == 0) continue;
else flag = 0;
printf("%c", a[i] + 0x30);
if(mode) printf(" ");
}
}
void convert1(BigNum a, const BigNum b)//
{
char c[NUMLEN];
memset(c, 0, NUMLEN);
int i, len = numLen(a);
for(i=0;i<len;i++)
{
if(a[i]*3 < 10) c[i] = a[i] * 3;
else if(a[i]*2 <10) c[i] = a[i] * 2;
else c[i] = a[i];
}
bigNumCpy(a, c);
}
void outNorepeatNum(BigNum a)//输出没有重复的数字;
{
int count[10] = {0,0,0,0,0,0,0,0,0,0};
int i, len = numLen(a);
for(i=0;i<len;i++) count[a[i]] ++;
printf("烂腔没有重复的数字:");
for(i=0;i<10;i++) if(count[i] == 1) printf("%d ", i);
printf("\n");
}
void outEnNum(BigNum a)
{
const char enNum10[10][12] =
{"zero ", "one ", "two ", "three ", "four ",
"five ", "six ", "seven ", "eight ", "nine "};
const char enNum20[10][12] =
{ "ten ", "eleven ", "twelve ", "thirteen ", "fourteen ",
"饥樱衫fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen "};
const char enNum90[10][12]=
{ "", "", "twenty ", "thirty ", "fourty ",
"fifty ", "sixty ", "seventy ", "eighty ", "ninety "};
const char enNum100[] = "hundred ";
const char enNum1000[][20] =
{ "", "thousand ", "million ", "billion ", "trillion ",
"quadrillion ", "quintillion ", "sextillion ", "septillion ", "octillion ",
"nonillion ", "decillion ", "undecillion ", "odecillion ", "tredecillion ",
"quattuordecillion ", "quindecillion ", "exdecillion ", "septendecillion ", "octodecillion ",
"novemdecillion ", "vigintillion ", "centillion "};
int len = numLen(a) - 1;
int m = (len) / 3 + 1;
int n;
int j, k = len;
for(j=m;j>=0;j--)
{
n = (len ) % 3;
n++;
len -= n;
if(n == 3)
{
printf("%s", enNum10[a[k]]);
if(a[k]) printf("%s", enNum100);
n--; k--;
}
if(n == 2)
{
if(a[k] > 1)
{
printf("%s",enNum90[a[k]]);
n--; k--;
}
else if(a[k] == 1)
{
printf("%s",enNum20[a[--k]]);
n -= 2; k--;
}
else {k--; n--;}
}
if(n == 1)
{
if(a[k]) printf("%s",enNum10[a[k]]);
k--;
}
if(j) printf("%s",enNum1000[j-1]);
}
printf("\n");
}
//void outCnNum(BigNum a, int mode = 0)
//{
// const char num10[10][2][4] =
// {{"〇", "零"},{"一", "壹"},{"二", "贰"},{"三", "叁"},{"四", "肆"},
// {"五", "伍"},{"六", "陆"},{"七", "柒"},{"八", "捌"},{"九", "玖"}};
// const char num20[5][2][4] = {{"十", "拾"},{"百", "佰"},{"千", "仟"},{"万", "万"},{"亿", "亿"}};
// int len = numLen(a) - 1;
// int m = (len) / 8 + 1;
// int n, o, p;
// int i, j, k = len;
// for(j=m;j>=0;)
// {
// n = (len ) % 8;
// len -= n + 1;
// if(n > 3) {o = 2; p = 3;}
// else {o = 1; p = n;}
// //p = n - 4;
// while(o>0)
// {
// for(i=p;i>=0;i--)
// {
// printf("%s", num10[a[k]][mode]);
// if(i) printf("%s", num20[i-1][mode]);
// k--;
// }
// p = n - 4;
// o--;
// if(o>0) printf("%s", num20[3]);
// }
// for(i = j-1;i>0;i--) printf("%s", num20[4][mode]);
// j--;
// }
// printf("\n");
//}
int main()
{
char a[NUMLEN];
char c;
int n;
c = getchar();
srand(time(NULL));
while(c != 'n')
{
n = ((rand() & 0xFFFF) << 16) | (rand() & 0xFFFF);
printf("随机数字:%d\n", n);
covertInt(n, a);
printf("逐个输出随机数字:");
printBigNum(a,1);
printf("\n");
printf("数字位数:%d\n", numLen(a));
convert1(a, a);
covert(a, a);
printf("逐个反向输出转换后的数字:");
printBigNum(a,1);
printf("\n");
covertInt(n, a);
outNorepeatNum(a);
outEnNum(a);
//outCnNum(a);
//outCnNum(a, 1);
c = getchar();
}
for(n=0;n<NUMLEN;n++) a[n] = rand()%10;
printf("%d位随机数字:\n", NUMLEN);
printBigNum(a);
printf("\n");
outEnNum(a);
//outCnNum(a);
return 0;
}
㈡ 计算机编程中的取随机数函数是怎么实现的说一下大致原理就行
用时间高亮为种子生成的伪随机数,但猛毕并不是真正的随机,因为时间是确定枝念芹的,我以前就试验过,㝍了个程序取成千上万的随机数,然后把这些随机数以图象形式呈现出来,能发现明显的规律。更随机的方法其实也有,比如用很精确的传感器,去测量主机里的温度,风扇的转速,电路里的电压等,由于这些值会受到无数来自内外部变量的影响,难以确定值的大小,并且总是在不断变化,因此只要传感器够灵敏,用这些值做种子得到的随机数会更随机
㈢ C语言如何编程产生随机数
1、首先打开Visual stdio 2019,依次点击文件,新建,项拆喊目新建以一个空白的项目:
㈣ 如何用c语言产生一定范围内的随机数
srand((int)time(NULL));设定随机数种子
例子如下:
(4)如何编程利用随机数来表示爱意值扩展阅读:
随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。
㈤ C语言的随机抽样怎么编程
用rand函数
㈥ 如何利用EXCEL随机数字生成器生成随机数
首先介绍一下如何用RAND()函洞贺数来生成随机数(同时返回多个值时是不重复的)。
如下图所示,在单元格中输入=RAND(),回车后单元格即返回了一个随机数字。
RAND()函数返回的随机数字的范围是大于0小于1。因此,也可以用它做基础来生成给定范围内的随机数字。
生成制定范围的随机数方法是这样的,假设给定数字范围最小是A,最大是B,公式是:
=A+RAND()*(B-A)。
举例来说,要生成大于60小于100的随机数字,因为(100-60)*RAND()返回结果是0到40之间,加上坦帆范围的下限60就返回了60到100之间的数字。
上面RAND()函数返回的0到1之间的随机小数,如果要生成随机整数的话就需要用RANDBETWEEN()函数了,如下图该函数生成大于等于1小于等于100的随机整数。
这个函数的语法是这样的:=RANDBETWEEN(范围下限整数,范围上限整数),结果返回包含上下限在内的整数。注意:上限和下限也可以不是整数让颤雹,并且可以是负数。
5
RAND()和RANDBETWEEN()是生成随机数的基础函数,也可以灵活变通。比如说要生成0.01至1之间包含两位小数的随机数,则可用下图的公式实现:
㈦ 怎么使用java编程:随机产生一个1-10之间爱的随机数,由用户重复从键盘输入值,直到猜中该随机数为止
代码如下:
importjava.util.Date;
importjava.util.Scanner;
publicclassGuessNumberGames{
staticlongnowstart;
publicstaticvoidmain(String[]args){
intnumber=(int)(Math.random()*10+1);
inttemp=number;
System.out.println("请猜一个10以内的数:");
GuessNumberGamesrt=newGuessNumberGames();
intin=rt.Sn();
nowstart=newDate().getTime();
Booleanyn=rt.Compare(temp,in);
while(!yn){
System.out.println("请重新输入:");
intin1=rt.Sn();
yn=rt.Compare(temp,in1);
}
System.out.println("正确数字是:"+number);
}
publicBooleanCompare(inttemp,intnumber){
Booleanyesno=null;
if(temp==number){
System.out.println("猜对了!");
longnowend=newDate().getTime();
System.out.println("一共用时"+(nowend-nowstart)/1000+"秒");
yesno=true;
}elseif(number<temp){
System.out.println("猜小了");
yesno=false;
}elseif(number>temp){
System.out.println("猜大了");
yesno=false;
}
returnyesno;
}
publicintSn(){
Scannersc=newScanner(System.in);
intin=sc.nextInt();
returnin;
}
}
满意请采纳!