Как делать для того, чтобы в функции random.randrange результат не повторился?

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

import random

for i in range(15):
    x = random.randrange(2,9)
    y = random.randrange(2,9)
    z = x * y
    print(x, "*", y, "=", z)

А именно,

5 * 7 = 35
6 * 3 = 18
4 * 5 = 20
2 * 6 = 12
8 * 7 = 56
8 * 6 = 48
7 * 6 = 42
3 * 3 = 9
4 * 8 = 32
4 * 3 = 12
2 * 4 = 8
7 * 6 = 42
5 * 7 = 35
6 * 3 = 18
6 * 2 = 12

что не повторился так (5*7; 5*7), я даже не схватил (2*6; 6*2)

0
задан 13.11.2017, 22:00
2 ответа

Ты должен ориентировать лучшую проблему. Если ты не хочешь повторить пары nГєmeros, что ты можешь пробовать сначала, - это, чтобы производить все возможные пары и, между всеми ними, выбирать случайным образом тех, которых ты хочешь.

Например:

import random

productos = [(x,y) for x in range(2,10) for y in range(x,10)]

for (x,y) in random.sample(productos,15):
    print("{} * {} = {}".format(x, y, x*y))
3
ответ дан 24.11.2019, 14:42

Я не Phyton, но я оставляю тебе pseudocode надеюсь, что тебе помогает

arr[][] no se como sera en Phyton pero creas un 
        array asignas el tamaño si lo nesecita ect.  

int count = 0;
short xC  = 0;
short yC  = 1;

for i in range(15):

do
    x = random.randrange(2,9)
    y = random.randrange(2,9)
    z = x * y

while (llamar a una funcion que mire dentro del array si existen, 
       si no devuelva false, -> compro(x, y))

añade los datos que son los que comprobara despues con la llamada
a la funcion en while

añades los datos que antes no estaban

arr[xC][count] = x
arr[yC][count] = y

count ++

print(x, "*", y, "=", z)

bool compro(compX, compY){

    bool existe = false

    for (int a = 0; a < arr.leng; a++){

        if(arr[xC][a] == compX){
            if(arr[yC][a] == compY){
                existe = true
                usar break o a = arr.leng +10 el caso es salir del for 
            }
        }

        if(arr[xC][a] == compY){ aqui si podria usa el leng
                                 en el caso de que uses arr.leng +10
                                 para que no compruebe este if pero es 
                                 solo un detalle
            if(arr[yC][a] == compX){
                existe = true
                usar break o a = arr.leng +10 el caso es salir del for
            }
        }
    }

    return existe
}

, if могли бы сжиматься, но я думаю, что таким образом понимают хорошо. Также учти, когда ты осуществишь функцию, которую ты называешь с while, потому что, если он всегда возвращает true, продолжат тебе ходить

0
ответ дан 24.11.2019, 14:42
  • 1
    Поэтому никто не хочет использовать C или Javascript а Пайтон, потому что это много м и # 225; s f и # 225; cil — и м и # 225; s я отрезаю!:-) –  erik 22.03.2016, 17:49

Теги

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