Я пытаюсь создать действительно простой скрипт для генерации 2d-массива, в котором каждый n-й массив не содержит свой собственный индекс в качестве элемента, но содержит случайное количество других рандомизированных значений индекса в качестве своих элементов и не может быть пустым. Ниже приведен небольшой код, который я написал, чтобы попытаться достичь этого:
totElList = []
numEls = 1000
for (i=0;i<numEls;i++) {
totElList[i] = []
for (j=0;j<numEls;j++) {
totElList[i][j] = j
}
}
for (i in totElList) {
totsplice = Math.round(Math.random()*(numEls-1))
totElList[i].splice(i,1)
for (j=0;j<totsplice;j++) {
rand = Math.round(Math.random()*totElList[i].length)
while (typeof(totElList[i][rand]) === undefined) {rand = Math.round(Math.random()*totElList[i].length)}
totElList[i].splice(rand,1)
}
}
Проблема в том, что когда я запускаю этот массив, массив totElList содержит больше нулей, чем любое другое число, хотя я предполагал, что элементы будут удалены случайным образом. Я сделал тест, чтобы подтвердить это. Количество 0 всегда является максимальным из всех возможных значений для данного numEls. Я предполагаю, что это как-то связано с работой Math.random () и Math.round (), но я не уверен. Может ли кто-нибудь дать мне некоторое представление? Спасибо.