台灣最大程式設計社群網站
線上人數
2832
 
會員總數:246279
討論主題:189813
歡迎您免費加入會員
討論區列表 >> Java >> 請教『隨機顯示,但要取得"不重覆"』
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請教『隨機顯示,但要取得"不重覆"』
價值 : 500 QP  點閱數:3856 回應數:34
樓主

逃咖小巴蕊
門外漢
0 2
126 19
發送站內信

我現在是使用js與htm分開的方式,

js存成imgjs.js,
取得隨機的方式為:

today=new Date();
jran=today.getTime();
function rnd() {
ia=9301;
ic=49297;
im=233280;
jran = (jran*ia+ic) % im;
return jran/(im*1.0);
};
function rand(number) {
return Math.ceil(rnd()*number);
};
document.write("<center>");
for(i=1;i<=1;i++) {
myNum=(rand(51)); //隨機顯示的圖片數;
if(myNum == 1) document.write("<a href='http://xxx1.com' target='_blank'><img src='http://xxx/01.jpg' width='270' height='300'></a>");
if(myNum == 2) document.write("<a href='http://xxx2.com' target='_blank'><img src='http://xxx/02.jpg' width='270' height='300'></a>");
if(myNum == 3) document.write("<a href='http://xxx3.com' target='_blank'><img src='http://xxx/03.jpg' width='270' height='300'></a>");
...
...
...
if(myNum == 51) document.write("<a href='http://xxx51.com' target='_blank'><img src='http://xxx/51.jpg' width='270' height='300'></a>");
else {
document.write();
}
};
document.write("</center>");

htm存為一個檔,
在要顯示圖片的地方加入:

<script src="js/imgjs.js"></script>

在顯示方面沒問題了,但不懂得怎麼取得不重覆的方法…求教!

搜尋相關Tags的文章: [ 隨機 ] , [ 不重覆 ] ,
本篇文章發表於2015-04-27 14:04
31樓
最有價值解答

香帥
檢舉此回應
看了許多文章,卻不太了解在read.txt中第一行的問題,
或是可能我搜尋的方式不正確,
不知香帥能否再不吝告知最後的這個問題,
或是告訴我應該要怎麼搜尋可以去了解read.txt第一行的問題 Thanks
因為陣列由0開始取值,而程式碼i是由1取值
因此第一行是讀到陣列[0],但因我們的程式碼i是由1開始,因此放棄第一行,就是將第一行當成註解不要用
若要用也可以,迴圈i由1-51 就要改為0-50,看您個人習慣。
本篇文章回覆於2015-04-29 02:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
32樓
作者回應

逃咖小巴蕊
檢舉此回應
原來如此,
非常感謝香帥的解答,
讓我又多理解許多java的原理,
真的很感謝!!

此題已解答完畢,
請香帥記得把圖片刪除哦!
本篇文章回覆於2015-04-29 13:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
33樓
回應

P陳
檢舉此回應
小弟的作法會如下:
1.建一個資料表A,內有圖名、位址、順序(亂數值)等欄位(每一張圖建一筆資料)
2.每隔一段時間後,每一筆資料的順序重填入亂數值。
3.將表A讀入(order by 順序),以亂數取得要開始顯示的第一筆資料,再依序往下讀出即可(如超過最後一筆 再重頭),保證不會重覆,又可以減少比對的時間。
4.比如可以每 50次重算一次亂數值。(如果您會 SQL 的 triger ,可以設定每5分)
5.加圖時只要加一筆資料即可。




本篇文章回覆於2015-04-30 16:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
34樓
作者回應

逃咖小巴蕊
檢舉此回應
回應 P陳 :
1.建一個資料表A,內有圖名、位址、順序(亂數值)等欄位(每一張圖建一筆資料)
2.每隔一段時間後,每一筆資料的順序重填入亂數值。
3.將表A讀入(order by 順序),以亂數取得要開始顯示的第一筆資料,再依序往下讀出即可(如超過最後一筆 再重頭),保證不會重覆,又可以減少比對的時間。

第一個問題
例:
資料表A內容為:
01,http://xxx.01.jpg,1
02,http://xxx.02.jpg,8
...
...
...
51,http://xxx.01.jpg,39
至51個全輸入完成…
我這樣理解正確嗎?

2.然後隔段時間後,重填入亂數值

但是這樣要改的,不就是每次都需要去更動51筆資料…
這樣不會比較累嗎?

3.的部份我有懂意思,也就是讓程式不用一直去比對,
因為當時的順序已經給了隨機值,
所以程式在讀取時,只需要隨機抓出第一筆,
其他的依序列出,所以減少了每張圖都需要比對過的時間…
這樣理解正確嗎?
本篇文章回覆於2015-05-09 10:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.