導航:首頁 > 源碼編譯 > java隨機演算法代碼

java隨機演算法代碼

發布時間:2023-02-03 20:01:19

① 怎樣用java產生一個指定范圍的隨機數

java.util
類 Random
java.lang.Object
java.util.Random
所有已實現的介面:
Serializable
直接已知子類:
SecureRandom

--------------------------------------------------------------------------------

public class Randomextends Objectimplements Serializable此類的實例用於生成偽隨機數流。此類使用 48 位的種子,使用線性同餘公式對其進行修改(請參閱 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 節)。

如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列。為了保證屬性的實現,為類 Random 指定了特定的演算法。為了 Java 代碼的完全可移植性,Java 實現必須讓類 Random 使用此處所示的所有演算法。但是允許 Random 類的子類使用其他演算法,只要其符合所有方法的常規協定即可。

Random 類所實現的演算法使用一個 protected 實用工具方法,每次調用它都可提供最多 32 個偽隨機生成的位。

很多應用程序會發現 Math 類中的 random 方法更易於使用。

從以下版本開始:
JDK1.0
另請參見:
Math.random(), 序列化表格

--------------------------------------------------------------------------------

構造方法摘要
Random()
創建一個新的隨機數生成器。
Random(long seed)
使用單個 long 種子創建一個新隨機數生成器: public Random(long seed) { setSeed(seed); } next 方法使用它來保存隨機數生成器的狀態。
方法摘要
protected int next(int bits)
生成下一個偽隨機數。
boolean nextBoolean()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 boolean 值。
void nextBytes(byte[] bytes)
生成隨機位元組並將其置於用戶提供的位元組數組中。
double nextDouble()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0之間均勻分布的 double 值。
float nextFloat()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0 之間均勻分布的 float 值。
double nextGaussian()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、呈高斯(「正常地」)分布的 double 值,其平均值是 0.0,標准偏差是 1.0。
int nextInt()
返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的 int 值。
int nextInt(int n)
返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。
long nextLong()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 long 值。
void setSeed(long seed)
使用單個 long 種子設置此隨機數生成器的種子。
樓下的,直接說不理解有什麼用

② 用加減乘除演算法隨機出題java源代碼

import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import oracle.jdbc.driver.OracleDriver;

public class GenPaperServlet extends HttpServlet
{

Connection conn;
Statement stmt;
ResultSet rs;
int total_question_num;
int total_question_in_paper;
int total_paper_num;
String curr_classid;

public GenPaperServlet()
{
conn = null;
stmt = null;
rs = null;
total_question_num = 0;
total_question_in_paper = 0;
total_paper_num = 0;
curr_classid = "";
}

public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
httpservletresponse.setContentType("text/html;charset=GBK");
PrintWriter printwriter = httpservletresponse.getWriter();
printwriter.println("<html><head></head><body><center>");
printwriter.println("請以POST方式提交");
printwriter.println("</center></body></html>");
printwriter.close();

③ 隨機9位不重復的數 哪位大蝦有在java中生成隨機9位不能重復的數的演算法

看了幾個寫法都不是很滿意,強烈給樓主推薦我的程序,可以動態生成任意位的不重復隨機數,並且范圍可以自己控制

import java.util.Random;
import java.util.Vector;

public class RanNum {

public Vector<Integer> a; //定義一個向量,用於動態數組的存儲

public void RandomNum(int n, int m){
//隨機數的范圍,可以生成10 個0-100的數,那麼n=10,m=100.

Random ran = new Random();

a = new Vector<Integer>();
int ra = ran.nextInt(m);

a.add(ra);

for (int i = 0; i < n; i++) {
int r = ran.nextInt(m);

for (int j = 0; j < i; j++) {
if (a.get(j) == r) { //一旦發現有重復的數,立即結束循環,並重新執行第j步
i--;
break;

} else { //只要沒有重復,那麼就在第i個位置寫入新數據。多次反復j遍

if (a.size() > i)
a.set(i, r);
else
a.add(r);
}
}
}

for (int i = 0; i < n; i++) {
System.out.print(a.get(i) + " ");

}
}

public static void main(String[] args){
RanNum RN = new RanNum();//生成新對象
RN.RandomNum(9, 9); //根據自己要求選擇不重復隨機數的個數和范圍
}
}

④ java中Math.random();演算法

把A,2,3,4,5,6,7,8,9,10,J,Q,K放進list!

這個還算小復雜!
要用hashmap放人和牌, Collections.shuffle(list)的一個方法洗牌!

用Math.random()這個就麻煩了,要寫個演算法,每次減一個元素!
如果是一副牌還好辦!2個數組分別存放花色和牌號,然後組合放進list里,洗牌,然後循環list。get((int)math.random());放進hashmap里!
然後list。remove()!

⑤ 求一個java的隨機演算法,高手來

好好的看一下就知道為什麼list的長度與count 相同時,總是出現死循環 。
你在int[] a=new int[count]; 這一步操作時,數組a中的數據全部默認為0,而int rs=ran.nextInt(list.size()); 返回的值是0到list.size()-1的數。當list的長度與count 相同時,在產生最後一個隨機數時,只能產生0,可是0在數組a中又存在了,所以就死循環了。

編程時,多注意邊界問題。

⑥ java中的隨機循環怎麼做

java產生隨機數的幾種方式 n 在j2se里我們可以使用Math.random()方法來產生一個隨機數,這個產生的隨機數是0-1之間的一個double,我們可以把他乘以一定的數,比如說乘以100,他就是個100以內的隨機,這個在j2me中沒有。 n 在java.util這個包裡面提供了一個Random的類,我們可以新建一個Random的對象來產生隨機數,他可以產生隨機整數、隨機float、隨機double,隨機long,這個也是我們在j2me的程序里經常用的一個取隨機數的方法。 n 在我們的System類中有一個currentTimeMillis()方法,這個方法返回一個從1970年1月1號0點0分0秒到目前的一個毫秒數,返回類型是long,我們可以拿他作為一個隨機數,我們可以拿他對一些數取模,就可以把他限制在一個范圍之內啦 其實在Random的默認構造方法里也是使用上面第三種方法進行隨機數的產生的 對於方法二中的Random類有以下說明: java.util.Random類有兩種方式構建方式:帶種子和不帶種子 不帶種子: 此種方式將會返回隨機的數字,每次運行結果不一樣 public class RandomTest { public static void main(String[] args) { java.util.Random r=new java.util.Random(); for(int i=0;i<10;i++){ System.out.println(r.nextInt()); } } 帶種子: 此種方式,無論程序運行多少次,返回結果都是一樣的 public static void main(String[] args) { java.util.Random r=new java.util.Random(10); for(int i=0;i<10;i++){ System.out.println(r.nextInt()); } } 兩種方式的差別在於 (1) 首先請打開Java Doc,我們會看到Random類的說明: 此類的實例用於生成偽隨機數流,此類使用 48 位的種子,該種子可以使用線性同餘公式對其進行修改(請參閱 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 節)。 如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列。為了保證實現這種特性,我們為類Random指定了特定的演算法。為了 Java 代碼的完全可移植性,Java 實現必須讓類 Random 使用此處所示的所有演算法。但是允許 Random 類的子類使用其他演算法,只要其符合所有方法的常規協定即可。 Java Doc對Random類已經解釋得非常明白,我們的測試也驗證了這一點。 (2) 如果沒有提供種子數,Random實例的種子數將是當前時間的毫秒數,可以通過System.currentTimeMillis()來獲得當前時間的毫秒數。打開JDK的源代碼,我們可以非常明確地看到這一點。 /** * Creates a new random number generator. Its seed is initialized to * a value based on the current time: * Random() { this(System.currentTimeMillis()); }java.lang.System#currentTimeMillis() */ public Random() { this(System.currentTimeMillis()); } 另外: random對象的nextInt(),nextInt(int n)方法的說明: int nextInt() 返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的 int 值。 int nextInt(int n) 返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。

⑦ 求大神指導 java里 隨機小數演算法 控制在 0.5~ 0.1之間

publicclassMathTest{
publicstaticvoidmain(String[]args){
for(inti=0;i<100;i++){
if((i+1)%10!=0)
sop("");
else
sop(" ");
}
}
privatestatic<T>voidsop(Tt){
System.out.print(String.format("%.2f",(Math.random()*0.5+0.01))+t);
}
}

⑧ 請用JAVA演算法編寫,隨機生成1-100以內數組,找出最大值和最小值!

//隨機數的個數自己輸入。然後將隨機生成的整數放入數組a中。//有什麼問題可以繼續追問import java.util.Scanner;public class ces {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.print("請輸入要隨機生成數(1-100)的個數:");
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<a.length;i++)
a[i]=(int) (Math.random()*100+1);
int max=a[0];
int min=a[0];
for(int j=1;j<a.length;j++)
{
if(a[j]>max) max=a[j];
if(a[j]<min) min=a[j];
}
System.out.println("最大值為:"+max);
System.out.println("最小值為:"+min);
}
}

⑨ 用JAVA產生[0,1]均勻分布的隨機數 要演算法

double rand(double []r)
{
double base,u,p,v,temp1,temp2,temp3;
base=256.0;
u=17.0;
v=139.0;
temp1=u*(r[0])+v; //就算總數
temp2=(int)(temp1/base);//計算商
temp3=temp1-temp2*base;//余數
r[0]=temp3;//更新隨機種子,為下一次使用
p=r[0]/base;//產生隨機數
return p;

}
其中base為基數,一般去2的整數倍,常數,u、v可以隨意取。數組r[]為只能去一個值的數組。如:double[]r={5.0}.

⑩ 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方法是用來產生隨機數的。

閱讀全文

與java隨機演算法代碼相關的資料

熱點內容
愛戀3d未刪減版百度雲網盤 瀏覽:47
安卓邊境怎麼玩 瀏覽:203
不用下載免費網址 瀏覽:186
gl片子 瀏覽:41
台灣電影男學生女老師 瀏覽:743
推薦個能看的網址你懂的 瀏覽:149
免費觀看歐美純愛電影 瀏覽:222
帶男朋友張浩回宿舍影片名字 瀏覽:177
抗戰二級電影 瀏覽:115
愛情電影中文網 瀏覽:975
民國片 瀏覽:534
移動轉電信代理伺服器地址 瀏覽:771
不卡頓電影網免費觀看 瀏覽:358
摩登情書在線免費閱讀全文 瀏覽:308
能看動漫黃的網站 瀏覽:105
陪女人看電影逛街是什麼app 瀏覽:825
韓國電影百度雲有哪些 瀏覽:982
財務經理可以命令出納幹活嗎 瀏覽:534
女性癮者2墮胎怎麼拍的 瀏覽:324
電影開頭一個叫水生的小孩 瀏覽:987