如何生成固定數(shù)值的隨機數(shù)組

本來是要寫一個n*n的宮格,1到n^2 的整數(shù)隨機出現(xiàn)在每個格子里,用戶按從1到n^2的順序依次點擊每個方格,若順序正確,則格子翻轉(zhuǎn)。用戶按完則統(tǒng)計總用時。

大致的思路是這樣:以n=3為例,先生成一個1-9隨機亂序排列的數(shù)組,這樣的話,在生成九宮格時就不必考慮隨機性的問題,只需按順序輸出到表格中就行了。

所以問題就轉(zhuǎn)變?yōu)椋喝绾紊梢粋€固定數(shù)字隨機亂序排列的數(shù)組。

首先,為了方便縷清邏輯,我這里按字母a到i的順序定義了一個初始數(shù)組,定義了一個空數(shù)組用來存儲亂序的字母:

var nums = ["a","b","c","d","e","f","g","h","i"];     //定義初始數(shù)組
var randomNums = new Array();     //定義一個空數(shù)組,用來存儲隨機數(shù)

然后用for循環(huán),每次循環(huán)生成一個0到初始數(shù)組的長度-1的整數(shù),用這個整數(shù)作為下標,去取初始數(shù)組里的值,并把這個值按順序?qū)懭氲教崆皽蕚浜玫目諗?shù)組。并且通過這個下標定位到初始數(shù)組把對應(yīng)的值刪掉,防止下一輪這個值被取到,這樣就解決了隨機數(shù)不重復(fù)的問題。且因為每次循環(huán)是根據(jù)初始數(shù)組的長度-1來隨機取數(shù),所以每一輪都剛好在該數(shù)組中隨機取到一個值。

for (var i = nums.length; i > 0; i--) {
        var bridge = Math.floor(Math.random()*nums.length);     //給bridge賦值一個0到nums.length-的隨機整數(shù)    
        randomNums.push(nums[bridge]);
        var index = nums.indexOf(nums[bridge]);   //根據(jù)bridge定位到初始數(shù)組的某個值,并取到這個值的下標
        nums.splice(index,1);   //根據(jù)下標把初始數(shù)組的這個值刪掉       
        }

至此,我們得到一個將a-i隨機排列的數(shù)組randomNums。

在html的body里,我們定義一個空的div用于存放九宮格:

<div id="mainTable">
</div>

然后通過改寫innerHTML的方式,直接把新的數(shù)組randomNums里每個值按順序?qū)懭氲奖砀?,此時可以不必再考慮隨機性問題。

var mainTable = document.getElementById('mainTable');
        mainTable.innerHTML = "<table><tr><td>" + randomNums[0] + "</td><td>"+randomNums[1]+"</td><td>"+randomNums[2]+"</td></tr><tr><td>"+randomNums[3]+"</td><td>"+randomNums[4]+"</td><td>"+randomNums[5]+"</td></tr><tr><td>"+randomNums[6]+"</td><td>"+randomNums[7]+"</td><td>"+randomNums[8]+"</td></tr></table>";

得到的結(jié)果如下:

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,512評論 6 13
  • 1. 找出數(shù)組中重復(fù)的數(shù)字 題目:在一個長度為n的數(shù)組里的所有數(shù)字都在0到n-1的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,...
    BookThief閱讀 2,025評論 0 2
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,081評論 0 2
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,727評論 0 5
  • 六項精進 2018-10-20 姓名:彭雪 公司:廣漢油脂 354期學員 379期志工 【日精進打卡第2...
    poppy彭閱讀 164評論 0 0

友情鏈接更多精彩內(nèi)容