當前位置:首頁 » 編程語言 » c語言正態分布

c語言正態分布

發布時間: 2025-06-14 02:17:09

⑴ 如何用c語言生成一個正態分布的樣本

不用加分,我做過,用來產生圖像的高斯雜訊,也就是你要的正態分布.
1.首先你的樣本應該是有一定范圍的吧,我假設它是從1-255
2.根據你的方差和期望,把樣本代進去,算出該樣本出現的概率
3.然後根據概率知識,你做一個累積概率
4.接著你用隨機數產生一個0-1之間的均勻分布
5.看這個數落在哪個累積概率區間
6.按你要的樣本數重復4-5
代碼這里我給個matlab程序你參考一下,很好懂的

function [dest] = GeneGauss(expectation,deviation,width,height)
dest=zeros(width,height);
pz=zeros(256);
tempConst1=1/(sqrt(2*pi)*deviation);
tempConst2=2*deviation*deviation;
for i=1:256
pz(i)=tempConst1*exp(-(i-1-expectation)^2/tempConst2);
end
f=zeros(256);
f(1)=pz(1);
for i=2:256
f(i) = f(i-1)+pz(i);
end
for i=1:width
for j=1:height
n=rand;
for k=1:256
if(n<f(k))
dest(i,j)=k-1;
break;
end
end
end
end
end

⑵ 採用c語言實現首次適應演算法完成主存空間的分配和回收 急

有沒有具體的要求,比方說數據結構方面,我這有一個,你可以參考參考
#include"stdio.h"
#include"stdlib.h"
#define
n
10
/*假定系統允許的最大作業為n,假定模擬實驗中n值為10*/
#define
m
10
/*假定系統允許的空閑區表最大為m,假定模擬實驗中m值為10*/
#define
minisize
100
struct{
float
address;
/*已分分區起始地址*/
float
length;
/*已分分區長度,單位為位元組*/
int
flag;
/*已分配區表登記欄標志,用"0"表示空欄目*/
}used_table[n];
/*已分配區表*/
struct{
float
address;
/*空閑區起始地址*/
float
length;
/*空閑區長度,單位為位元組*/
int
flag;
/*空閑區表登記欄標志,用"0"表示空欄目,用"1"表示未分配*/
}free_table[m];
/*空閑區表*/
void
main(
)
{
int
i,a;
void
allocate(char
str,float
leg);//分配主存空間函數
void
reclaim(char
str);//回收主存函數
float
xk;
char
J;/*空閑分區表初始化:*/
free_table[0].address=10240;
free_table[0].length=102400;
free_table[0].flag=1;
for(i=1;i<m;i++)
free_table[i].flag=0;/*已分配表初始化:*/
for(i=0;i<n;i++)
used_table[i].flag=0;
while(1)
{
printf("\n選擇功能項(0-退出,1-分配主存,2-回收主存,3-顯示主存)\n");
printf("選擇功項(0~3)
:");
scanf("%d",&a);
switch(a)
{
case
0:
exit(0);
/*a=0程序結束*/
case
1:
/*a=1分配主存空間*/printf("輸入作業名J和作業所需長度xk:
");
scanf("%*c%c%f",&J,&xk);
allocate(J,xk);/*分配主存空間*/
break;
case
2:
/*a=2回收主存空間*/printf("輸入要回收分區的作業名");
scanf("%*c%c",&J);reclaim(J);/*回收主存空間*/
break;
case
3:
/*a=3顯示主存情況*//*輸出空閑區表和已分配表的內容*/
printf("輸出空閑區表:\n起始地址
分區長度
標志\n");
for(i=0;i<m;i++)
printf("%6.0f%9.0f%6d\n",free_table[i].address,free_table[i].length,
free_table[i].flag);
printf("
按任意鍵,輸出已分配區表\n");
getchar();
printf("
輸出已分配區表:\n起始地址
分區長度
標志\n");
for(i=0;i<n;i++)
if(used_table[i].flag!=0)
printf("%6.0f%9.0f%6c\n",used_table[i].address,used_table[i].length,
used_table[i].flag);
else
printf("%6.0f%9.0f%6d\n",used_table[i].address,used_table[i].length,
used_table[i].flag);
break;
default:printf("沒有該選項\n");
}/*case*/
}/*while*/
}/*主函數結束*/
int
uflag;//分配表標志
int
fflag;//空閑表標志
float
uend_address;
float
fend_address;
void
allocate(char
str,float
leg)
{
uflag=0;fflag=0;
int
k,i;float
ressize;
for(i=0;i<m;i++)
{
if(free_table[i].flag==1
&&
free_table[i].length>=leg)
{
fflag=1;break;
}
}
if(fflag==0)
printf("沒有滿足條件的空閑區\n");
else
{
ressize=free_table[i].length-leg;
for(k=0;k<n;k++)
{
if(used_table[k].flag==0)
{
if(ressize<minisize)//剩餘塊過小
{
used_table[k].length=free_table[i].length;
used_table[k].address=free_table[i].address;
used_table[k].flag=str;
free_table[i].length=0;
free_table[i].flag=0;
break;
}
else
{
used_table[k].address=free_table[i].address+ressize;
used_table[k].flag=str;
used_table[k].length=leg;
free_table[i].length=ressize;
break;
}
}
}//for結束
}
}
void
reclaim(char
str)
{
uflag=0;fflag=0;
int
k,i;
for(k=0;k<n;k++)
{
if(used_table[k].flag==str)
{
uflag=1;break;
}
}
if(uflag==0)
printf("\n找不到該作業!\n");
else
{
for(i=0;i<m;i++)
{
uend_address=used_table[k].address+used_table[k].length;
fend_address=free_table[i].address+free_table[i].length;
if(used_table[k].address==fend_address)//上鄰
{
fflag=1;
free_table[i].length=free_table[i].length+used_table[k].length;
free_table[i].flag=1;
used_table[k].flag=0;
used_table[k].length=0;
used_table[k].address=0;
printf("\n已回收!\n");
break;
}
else
{
if(free_table[i].address==uend_address)//下鄰
{
fflag=1;
free_table[i].address=used_table[k].address;
free_table[i].length=free_table[i].length+used_table[k].length;
free_table[i].flag=1;
used_table[k].flag=0;
used_table[k].length=0;
used_table[k].address=0;
printf("\n已回收!\n");
break;
}
}
}//for結束
if(fflag==0)
{
i=0;
for(i=0;i<m;i++)
{
if(free_table[i].flag==0)
{
free_table[i].address=used_table[k].address;
free_table[i].length=used_table[k].length;
free_table[i].flag=1;
used_table[k].length=0;
used_table[k].flag=0;
used_table[k].address=0;
break;
}
}
printf("\n已回收!\n");
}
}
}

⑶ c語言編程e是什麼意思

在C語言中,e是一個特殊的數字表示方式,它代表自然對數的底數,即e=718281828459045。e這個常數在計算機科學和工程中經常被使用,因為它可以用來表示各種不斷增長的現象,例如利息、人口增長、氣溫變化等等。


在C語言中,如果我們想要使用e的值,可以通過調用math庫中的exp函數來實現。exp函數接受一個參數x,表示以e為底數的x次冪,返回值為數學上的指數函數值,即e^x。可以看出,e的值對於計算機科學和工程有至關重要的意義,是很多演算法和模型的核心。


除了在C語言中使用e來表示自然對數的底數,e還可以被廣泛應用到各個領域。例如,在物理學領域,e可以被用來描述定義電場、磁場、最大電流密度、最大磁通密度等等。在統計學和概率論中,e可以被用來定義指數分布、泊松分布、正態分布等等。可以說,e在數學和自然科學中具有重要的地位。

⑷ 如何在C語言中生成正態分布的隨機數,要源代碼~謝謝

隨機生成一百個1至100的隨機數。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main(int argc, char *argv[])
{
int i;
int a[N];
srand(time(NULL));
for(i=0;i<N;i++)
a[i]=rand()%100+1;
printf("生成的隨機數為:\n");
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
system("PAUSE");
return 0;
}
輸出結果如下:
生成的隨機數為:
41 15 82 1 23 51 16 96 92 17
86 71 87 69 74 5 50 18 42 52
46 34 52 18 40 74 79 35 22 36
65 94 80 91 18 72 61 79 4 11
61 30 95 55 11 19 38 87 78 52
95 30 99 53 99 99 10 79 70 33
91 85 10 99 47 58 93 41 19 71
56 60 10 24 73 87 18 38 13 73
57 22 91 4 37 60 67 58 85 48
46 7 57 100 73 96 60 44 24 23
請按任意鍵繼續. . .

熱點內容
淘寶號怎麼更換支付寶賬號密碼 發布:2025-06-14 20:16:34 瀏覽:52
質數推演算法 發布:2025-06-14 19:56:54 瀏覽:987
蘋果VNO添加配置怎麼填 發布:2025-06-14 19:32:41 瀏覽:207
安卓qq資料卡怎麼點贊 發布:2025-06-14 19:12:11 瀏覽:453
安卓如何設置定時自動發送簡訊 發布:2025-06-14 19:11:34 瀏覽:683
搜狗瀏覽器保存密碼在哪裡設置 發布:2025-06-14 18:58:30 瀏覽:113
c語言怎麼移位 發布:2025-06-14 18:58:28 瀏覽:780
安卓手機如何拍攝動漫人物 發布:2025-06-14 18:57:16 瀏覽:870
內網訪問埠映射 發布:2025-06-14 18:50:36 瀏覽:286
手機上傳到電腦的視頻 發布:2025-06-14 18:49:45 瀏覽:479