㈠ 用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;
}
}
滿意請採納!