Что нового

[Массивы] Рандомное заполнение массива 5х5 определенным кол-вом элементов.

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
#include <Array.au3>

Dim $aArray[5][5]

For $i = 0 To 7
	$aArray[Random(0,4,1)][Random(0,4,1)] = 1 ;заполняем еденицами
Next

For $i = 0 To 4
    For $j = 0 To 4
        If Not $aArray[$i][$j] = 1 Then $aArray[$i][$j] = 0	;заполняем остатки нулями
    Next
Next

_ArrayDisplay($aArray)

Примерно вот так.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Дело в том что примерно так я и делаю :smile: но нужно чтобы было именно 8 значений.
Код:
#include <IE.au3>
#include <Array.au3>
Dim $Arr1[5][5]
$k=8
For $i=0 to 4
	For $j=0 to 4
		If $k>0 Then
			If Random(0,1,1) Then
				$Arr1[$i][$j]=1
				$k-=1
			Else
				$Arr1[$i][$j]=0
			EndIf
		EndIf
	Next
Next
_ArrayDisplay($Arr1)

Но он исчерпывает к и заполняет массив не до конца.

Есть еще мысль выбирать 8 ячеек из 25, но опять же понимаю как это сделать.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Исправил пример. Я Просто сначала не понял :smile:
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Спасибо :smile: вроде допер.
Вот Round пропал стало понятнее.
А если выпадет 2 одинаковых ячейки?

З.Ы. Пример с Round уменьшает вероятность совпадения?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
#include <Array.au3>

Dim $aArray[5][5]

For $i = 0 To 7
	$k = Random(0,4,1)
	$j = Random(0,4,1)
	While 1
		If Not $aArray[$k][$j] = 1 Then
			$aArray[$k][$j] =  1
			ExitLoop
		Else
			$k = Random(0,4,1)
			$j = Random(0,4,1)
		EndIf
	WEnd
Next

For $i = 0 To 4
    For $j = 0 To 4
        If Not $aArray[$i][$j] = 1 Then $aArray[$i][$j] = 0	;заполняем остатки нулями
    Next
Next

_ArrayDisplay($aArray)

Вот так будет точно 8 едениц.
 
Верх