Как сделать так, чтобы числа не повторялись случайным образом в диапазоне с python3?

Я имею в виду создать игру типа выборов, в которой голоса будут генерироваться случайным образом, проблема в том, что я не могу получить случайные числа для генерации случайных чисел в диапазоне, например, я говорю случайным образом обменивать 1 и 2 случайным образом И то, что я получаю, это то, что во всем диапазоне одного и того же числа ... я оставляю экран для ясности ...! introducir la descripción de la imagen aquí

0
задан 27.11.2018, 11:11
3 ответа

То, за чем оно последует, состоит в том, что ты производишь nГєmero случайный вне цикла. А именно, она funciГіn randint только работает однажды производя один nГєmero случайный (что ты сохранял в переменной valor).

Для того, чтобы тебя произвело случайное различное число, ты должен помещать она funciГіn randint внутри цикла, например:

import random
for a in range(11):
  valor = random.randint(1, 2) # fijate que esta dentro del ciclo
  print(a, valor)
1
ответ дан 24.11.2019, 13:39
  • 1
    Большое спасибо! я начинаю программировать с Python3 и не sabí в это помещения randint внутри цикла! – windtux22 12.08.2016, 20:17

Если ранг не является очень большим, ты можешь создавать array booleano, названный например "доступный", инициализировавший в true, который он покажет, что числа ранга доступны, и переменная "доступные" с количеством случайных чисел, которые мы считаем доступным, инициализировавшим в disponible.length, тогда выбирать число случайным образом между 1 и "доступные", и обращаться "доступно" ища положение "true" пронумеровало "случайность", положение будет ответом, мы распределяем "false" в положении "случайности" и decrementamos "доступные". Таким образом, нарушая доступный одинокий "false" они выйдут однажды. Извинение, которое не показывало бы код python, но я это не знаю. Пример в javascript:

<!DOCTYPE html>
<button onclick="aleatorio()">Mostrar numero aleatorio</button>
<button onclick="resetear()">Resetear rango</button>

<SCRIPT>
var rango=11; // de 0 a 10;
var disponible=[];
var disponibles;

function resetear(){
	for (var i=0; i<rango; i++) disponible[i]=true;
	disponibles=rango;
}

function aleatorio(){
	if (!disponibles) {document.body.innerHTML+="Fin "; return;}
	var azar=Math.floor(Math.random()*disponibles)+1;
	var contador=0, posicion=0;
	while (contador<azar) if (disponible[posicion++]) contador++;
	disponible[--posicion]=false;
	disponibles--;
	document.body.innerHTML+=posicion+" ";
}
resetear();
</SCRIPT>
-1
ответ дан 24.11.2019, 13:39
  • 1
    Вопрос ссылается на Пайтона 3, твой ответ está написанная в Javascript. – Pancho Jay 26.01.2018, 22:38
  • 2
    Если, он это помещает в сам ответ. – Arnau Castellví 27.01.2018, 20:43

Попытайся со следующим cГіdigo:

import random

for a in range(11):
    print(a, random.randint(1,2))
0
ответ дан 24.11.2019, 13:39
  • 1
    функционируй tambié n, для которого я имею в разуме! спасибо! – windtux22 12.08.2016, 20:18

Теги

Похожие вопросы