當前位置:首頁 » 操作系統 » 生成演算法

生成演算法

發布時間: 2022-01-10 08:06:07

❶ 生成學習演算法和判別學習演算法的區別

那個不叫 區分模型 一般要叫判別模型
簡單說判別模型會描述從觀察到的現象會得到怎樣的結論 比如可以是類別等
生成模型會描述觀察到的現象是通過一種怎樣的數學結構產生的

❷ 求序列號生成演算法

隨機序列的演算法
作者:unknown 更新時間:2005-03-17

找到了兩個演算法, 第一個很簡單, 但可惜不是隨機的, 第二個是典型的偽隨機數演算法, 可惜要用到2的幾百萬次方這樣巨大的整數, 真痛苦
要是有UNIX上計算密碼的源代碼就好了

第一種做法:
f(k) = (k*F(N-1)) mod F(N)
其中,
k是一個序列號, 就是要取的那個數的順序號
F(N)是這樣一個序列 F(0) = 0, F(1) = 1, F(N+2) = F(N+1)+F(N) (for N>=0)

第二種做法

V = ( ( V * 2 ) + B .xor. B ... )(Mod 2^n)
N+1 N 0 2
V是要取的隨機數, B是個種子, n是隨機數的最大個數

原來這個問題, 很高難, 不少數學高手都為解決這個問題寫了論文, 咳咳, 偶真是個白痴

呵呵, 效果肯定是不錯啦, 因為用不到很大的表.
至於應用是這樣的, 比如, 你要給每個用戶在注冊的時候一個ID但有不希望用戶在看到自己的ID的時候能知道其他用戶的ID, 如果用SEQUENCE來生成ID的話, 一個用戶只要把自己的ID減1就能得到其它用戶的ID了. 所以要用隨機數來做ID, 這樣用戶很難猜到其他用戶的ID了.

當然主要的問題是, 隨機數可能重復. 因此希望使用一個隨機數做種子用它來確定一組"無規律"的自然數序列, 並且在這個序列中不會出現重復的自然數. 在這里使用的方法生成的序列並不是沒有規律的, 只不過這個軌律很難被發現就是了.
Xn+1 = (aXn + b) mod c (其中, abc通常是質數)是一種被廣泛使用的最簡單的隨機數發生演算法, 有研究表表明這個演算法生成的隨機數基本上符合統計規律, java, BORLAND C等用的都是這個方法, 一般只要保證第一個種子是真正的隨機數就行了,

下面來說一下重復的問題,
上述方法會有可能出現重復, 因為當(aXn + b)有可能是同樣的數或者說余數相同的數, 因此要想不重復就得變形
偶想到的方法是
Xn=(a*n + b) mod c n是一個在1到c之間的整數, a*n + b就是一個線性公式了, 且若n不同則a*n + b也不同, 它們除上質數c得到的余數也肯定不同, 因為 若不考慮a和b而只有n的時候, 每次的結果都是n,而線性公式, 只不過移動了這條直線的位置和斜率而已, 每個結果仍然不會相同的,
為了增加不可預計性, 偶又為上面那個公式設計了, 隨機數種子, 於是就變成了這個樣子
F(N)=(隨機數*(N+隨機數))MOD 一個質數
這樣就能夠產生 1到選定質數之間的一個"無規律"的自然數序列了, 只要改變隨機數就能改變序列的次序

在應用的時候, 要把隨機數種子和最後用到的序列號保存到一個表裡, 每此使用的時候取出來算好, 再把序列號更新一下就可以了
具體地說, 就是可以建一個表來保存每個序列的隨機數種子, 然後再為這個序列建一個SEQUENCE就行了
然後就
SELECT MOD(序列控製表.隨機數*(SEQ.NEXTVAL+序列控製表.隨機數)),序列控製表.質數)
FROM 序列控製表
WHERE 序列控製表.序列ID=XX
就OK了
注意 序列控製表.質數 決定了序列的范圍

http://www.ddvip.net/database/mssql/index2/81.htm /* CopyRight */

當然,我以前也見過那種類型的,就是「真隨機」,大概是根據隨機按鍵的鍵位和滑鼠在CRT上任意的「隨機」位置以及當時的系統時間(或相對間隔,一般至少毫秒級)來適應某種較復雜的演算法來產生的。...其實,可以產生隨機效應的自變數的確是很多的,就看你怎麼用好了。

去看看系統論和混沌學吧,還有高等數學中的分形理論和物理熱學中的耗散結構理論,可能會有所幫助,呵呵。
最後,倒有興趣問問你要的隨機數是做什麼用呢,是個子問題嗎?

❸ java怎麼進行隨機數生成演算法

要產生隨機數,可以使用Java api中java.lang包中的Math類.Math類以靜態方法的方式提供常用的數學方法,
其中Math.random()方法是一個可以產生[0.0,1.0]區間內的一個雙精度浮點數的方法
如:
產生一個100以內的整數:int x=(int)(Math.random()*100);
又如:
產生一個1-50之間的隨機數:int x=1+(int)(Math.random()*50)
也可以使用通用創建對象來獲取:
Random random = new Random();
random.nextInt(x);
產生一個0到x-1的正數,如果想產生浮點數有Random類的nextFloat方法,總之nextXXX方法是用來產生隨機數的。

❹ 求二維碼的生成演算法 C語言

二維碼有很多種標准,可以控制存儲數據的信息量,也可以控制容錯的數據量[使得部分污損的二維碼可以被正常讀取]

通常的做法是調用二維碼設計方提供的組件,像你這個准備自己生成二維碼,應該可以生成可以看起來很像的東西。

但是估計其餘的讀碼工具都讀取不出來。

❺ 直線和圓的生成演算法

直線和圓的像素級生成演算法2008-05-31 16:42直線的像素級生成演算法:

光柵掃描顯示器,其顯示屏是由許多被稱為像素的點組成。顯示器顯示的圖形或圖像就是通過這些像素的亮與不亮(或顏色不同)的各種組合而形成的。

像素級生成方法:如果要生成一條曲線,逐點地選擇那些距離曲線最近的像素並將其點亮,這就是像素級(或點)生成演算法。

優點:1. 生成的曲線誤差小,精度高。一般所顯示的像素與實際曲線之間的距離一般不大於二分之一個像素單位。

2. 演算法只使用整數運算(至少在主循環內只使用整數運算),因而執行速度快。

bresenham演算法:

偽代碼:

在(x1,y1)到(x2,y2)之間畫一條直線

dx 是x到終點橫坐標的距離

dy 是y到終點縱坐標的距離

ix 是dx的絕對值

iy 是dy的絕對值

inc是dx和dy中較大的那個

plot是是否要畫一個點的標志位,boolean變數

plotx 是當前點所在的橫坐標

ploty 是當前點所在的縱坐標

plotx = x1

ploty = y1

x = 0

y = 0

在 plotx,ploty畫一個點——起點

for i = 0 to inc 增量1

x += ix

y += iy

plot = false

if x > inc then

plot = true

x -= inc

if dx > 0 then plotx ++

if dx < 0 then plotx --

if y > inc then

plot = true

y -= inc

if dy > 0 then ploty ++

if dy < 0 then ploty --

if plot == true then 在(plotx,ploty)處畫點

c代碼:

void draw_line1(pnt s, pnt e)

{

int plotx, ploty; //當前點橫縱坐標

plotx = s.x;

ploty = s.y;

int x, y;

x = 0;

y = 0;

int dx, dy; //x,y到終點橫、縱坐標的距離

dx = e.x - s.x;

dy = e.y - s.y;

int ix, iy; //dx,dy的絕對值

ix = abs(dx);

iy = abs(dy);

int inc = (dx > dy ? dx : dy);

char plot = FALSE;

for(int i=0; i<inc; ++i)

{

x += ix;

y += iy;

plot = FALSE;

if(x > inc)

{

plot = TRUE;

x -= inc;

if (dx > 0)

plotx++; //當前點加1

if (dx < 0)

plotx--;

}

if(y > inc)

{

plot = TRUE;

y -= inc;

if(dy > 0)

ploty++;

if(dy < 0)

ploty--;

}

if(plot == TRUE)

{

int i = ploty*WIDTH + 3*plotx;

image[i] = 0;

image[i+1] = 0;

image[i+2] = 0;

}

}

LCD_SetFrameBufferAddress(image);

}

最快的像素級圓生成演算法:

形式描述:

x = 0; y = R;

d = -R/2;

if R is even then goto EvNoIt;

setpixel(x, y);

LOOP: x = x + 1;

if d<0 then d=d+x;

else {

y=y-1;

d=d+x-y;

if x>y then stop;

}

setpixel(x, y);

EvNoIt: x=x+1;

if d<0 then d=d+x+1;

else {

y=y-1;

d=d+x-y+1;

if x>y then stop;

}

setpixel(x, y);

goto LOOP;

C代碼:

void draw_circle(pnt c, int r)

{

int x,y,d;

x = 0;

y = r;

d = -r/2;

while(x<y)

{

if(r%2 == 0)

//第一象限

setpixel(c.x+x, c.y+y);

setpixel(c.y+y, c.x+x);

//第二象限

setpixel(c.x+x, c.y-y);

setpixel(c.y+y, c.x-x);

//

setpixel(c.x-x, c.y+y);

setpixel(c.y-y, c.x+x);

//

setpixel(c.x-x, c.y-y);

setpixel(c.y-y, c.x-x);

if(r%2 == 1)

{

x += 1;

if(d < 0)

d += x + 1;

else

{

y -= 1;

d += x - y + 1;

}

//第一象限

setpixel(c.y+y, c.x+x);

setpixel(c.x+x, c.y+y);

//第二象限

setpixel(c.x+x, c.y-y);

setpixel(c.y+y, c.x-x);

//

setpixel(c.x-x, c.y+y);

setpixel(c.y-y, c.x+x);

//

setpixel(c.x-x, c.y-y);

setpixel(c.y-y, c.x-x);

}

x += 1;

if(d < 0)

d += x;

else

{

y -= 1;

d += x - y;

}

//第一象限

setpixel(c.y+y, c.x+x);

setpixel(c.x+x, c.y+y);

//第二象限

setpixel(c.x+x, c.y-y);

setpixel(c.y+y, c.x-x);

//

setpixel(c.x-x, c.y+y);

setpixel(c.y-y, c.x+x);

//

setpixel(c.x-x, c.y-y);

setpixel(c.y-y, c.x-x);

}

LCD_SetFrameBufferAddress(image);

}

❻ 求一序列號生成演算法設計

看的我頭好大啊

❼ letax編寫論文時,原有模版生成演算法格式為:algorithm1, 如何讓algorithm與章節關聯, 如:演算法3.1

LaTeX(LATEX,音譯「拉泰赫」)是一種基於ΤΕΧ的排版系統,由美國計算機學家萊斯利·蘭伯特(Leslie Lamport)在20世紀80年代初期開發,利用這種格式,即使使用者沒有排版和程序設計的知識也可以充分發揮由TeX所提供的強大功能,
能在幾天,甚至幾小時內生成很多具有書籍質量的印刷品。對於生成復雜表格和數學公式,這一點表現得尤為突出。因此它非常適用於生成高印刷質量的科技和數學類文檔。這個系統同樣適用於生成從簡單的信件到完整書籍的所有其他種類的文檔。
LaTeX使用TeX作為它的格式化引擎,當前的版本是LaTeX2ε。
Leslie Lamport開發的LaTeX是當今世界上最流行和使用最為廣泛的TeX宏集。它構築在Plain TeX的基礎之上,並加進了很多的功能以使得使用者可以更為方便的利用TeX的強大功能。使用LaTeX基本上不需要使用者自己設計命令和宏等,因為LaTeX已經替你做好了。因此,即使使用者並不是很了解TeX,也可以在短短的時間內生成高質量的文檔。對於生成復雜的數學公式,LaTeX表現的更為出色。LaTeX自從八十年代初問世以來,也在不斷的發展.最初的正式版本為2.09,在經過幾年的發展之後,許多新的功能,機制被引入到LaTeX中。在享受這些新功能帶來的便利的同時,它所伴隨的副作用也開始顯現,這就是不兼容性。標準的LaTeX 2.09引入了「新字體選擇框架」(NFSS)的LaTeX、SLiTEX,AMS-LaTeX等等,相互之間並不兼容.這給使用者和維護者都帶來很大的麻煩。為結束這種糟糕的狀況,FrankMittelbach等人成立了ATeX3項目小組,目標是建立一個最優的,有效的,統一的,標準的命令集合。即得到LaTeX的一個新版本3.這是一個長期目標,向這個目標邁出第一步就是在1994年發布的LaTeX2e。LaTeX2e採用了NFSS作為標准,加入了很多新的功能,同時還兼容舊LaTeX 2.09。LaTeX2e每6個月更新一次,修正發現的錯誤並加入前,LaTeX2e將是標準的。[1]

❽ 什麼是列生成演算法

什麼是演算法?試從日常生活中找3個列,描述它們的演算法

❾ 列生成演算法

列生成
設yi(i∈N\{0})為前述線性規劃(LP)的對偶變數(al variable),則對應可 行路線r=(0,i1,i2, …, ik, 0)有即約代價(reced cost)fr:

它可表示為r上弧的邊際代價(marginal cost)之和:

這里弧(i,j)的邊際代價定義為

fij=Cij-yj,(i,j)∈r

當對任意r∈R有fr0時, 線性規劃(LP)求得最優解。
在實施列生成時,可行路線r通過動態規劃產生。設Fi(S,t)表示從中心出發,經過S中的 所有點i(PiSN)一次且僅僅一次,在t時刻或之前到達客戶i的路線的最小邊際成本, 則Fi(S,t)可用如下遞歸公式計算:

對所有的j,S,t, j∈N, SN, ajtbj.

❿ 像素地圖的隨機生成演算法是怎麼樣的

你看到的每一片風景,都是由好多程序員們默默地做出來的

解釋:
利用種子,每一個地圖都有一個種子
種子不同,地圖就不同
你的問題有一些不嚴謹
1、如果你的地圖種子很巧合的一樣,那麼你的地圖就是一樣的(只是出生地有些不同而已)
2、MC是個不科學的游戲···(你見過雪地和沙漠挨在一起的么···你見過用鐵桶容納1500度的岩漿的么···你見過那麼大個的蜘蛛么···你見過四格的水無限取么···)

熱點內容
單片機android 發布:2024-09-20 09:07:24 瀏覽:764
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:663
如何更換伺服器網站 發布:2024-09-20 08:42:34 瀏覽:310
子彈演算法 發布:2024-09-20 08:41:55 瀏覽:288
手機版網易我的世界伺服器推薦 發布:2024-09-20 08:41:52 瀏覽:816
安卓x7怎麼邊打游戲邊看視頻 發布:2024-09-20 08:41:52 瀏覽:161
sql資料庫安全 發布:2024-09-20 08:31:32 瀏覽:93
蘋果連接id伺服器出錯是怎麼回事 發布:2024-09-20 08:01:07 瀏覽:506
編程鍵是什麼 發布:2024-09-20 07:52:47 瀏覽:657
學考密碼重置要求的證件是什麼 發布:2024-09-20 07:19:46 瀏覽:480