Python Forum

Full Version: randint stops changing values in a loop
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
hi! i have a problem i can't understand, randint stops popping new randdom values even if the variables are in the loop:
def pvp():
    dicesonboard = []
    dicesused = []
    dicesonship = []
    dicesremaining = []
    socres = {}
    rounds = 0
    print("if you want to quit type quit")
    while rounds < 3:
        dice1 = randint(1, 6)
        dice2 = randint(1, 6)
        dice3 = randint(1, 6)
        dice4 = randint(1, 6)
        dice5 = randint(1, 6)
        dice6 = randint(1, 6)
        userinput = input("to start the game type throw: ").lower()
        rounds += 1
        if userinput == "quit":
            break
        if userinput == "throw":
            print("let the game begin")
            print("Round", rounds)
            dices = [dice1, dice2, dice3, dice4, dice5, dice6]
            print("Thrown Dices:  ""Dice I: ", dice1, "Dice II: ", dice2, "Dice III: ", dice3, "Dice IV: ", dice4,
                  "Dice V: ", dice5, "Dice VI: ", dice6)
            if 6 not in dicesonship:
                if 6 in dices:
                    print("you have a ship now gather a captain and a crew")
                    for i in dices:
                        if i == 6:
                            dicesonship.append(i)
                            dicesused.append(randint(1, 6))
                            break
as you can see, i did put ranind inside of an append fund while looping but the value stays the same
Error:
Round 1 Thrown Dices: Dice I: 6 Dice II: 6 Dice III: 6 Dice IV: 1 Dice V: 2 Dice VI: 6 you have a ship now gather a captain and a crew [5] [6] to start the game type throw: throw let the game begin Round 2 Thrown Dices: Dice I: 3 Dice II: 6 Dice III: 4 Dice IV: 5 Dice V: 1 Dice VI: 1 [5] [6] to start the game type throw: throw let the game begin Round 3 Thrown Dices: Dice I: 5 Dice II: 1 Dice III: 6 Dice IV: 6 Dice V: 3 Dice VI: 4 [5] [6]
focus on the list with the int 5 (don't care about the other list), i did try to change randint to the variables (dice1,2 etc) but that dosent work..

anyone can explain to me how does this work because i just don't get it, thank you!
I don't know if this will solve the problem but I thought you have to import random and it should look like this
import random
def pvp():
    dicesonboard = []
    dicesused = []
    dicesonship = []
    dicesremaining = []
    socres = {}
    rounds = 0
    print("if you want to quit type quit")
    while rounds < 3:
        dice1 = random.randint(1, 6)
        dice2 = random.randint(1, 6)
        dice3 = random.randint(1, 6)
        dice4 = random.randint(1, 6)
        dice5 = random.randint(1, 6)
        dice6 = random.randint(1, 6)
        userinput = input("to start the game type throw: ").lower()
        rounds += 1
        if userinput == "quit":
            break
        if userinput == "throw":
            print("let the game begin")
            print("Round", rounds)
            dices = [dice1, dice2, dice3, dice4, dice5, dice6]
            print("Thrown Dices:  ""Dice I: ", dice1, "Dice II: ", dice2, "Dice III: ", dice3, "Dice IV: ", dice4,
                  "Dice V: ", dice5, "Dice VI: ", dice6)
            if 6 not in dicesonship:
                if 6 in dices:
                    print("you have a ship now gather a captain and a crew")
                    for i in dices:
                        if i == 6:
                            dicesonship.append(i)
                            dicesused.append(randint(1, 6))
                            break
Obviously 6 is either not in dices, or is in dicesonship, which should be an empty list. Print to see.
well, that dosen't work, yes i printed the lists too see, what i have copied here is not the ful code, the 6 is in dicesonship but that's not the problem the problem is that the value of ranint is a constant and not random while looping in a while loop.
(Jan-29-2019, 07:10 PM)Naito Wrote: [ -> ]the problem is that the value of ranint is a constant and not random while looping in a while loop.

I could not replicate your problem:

import random
rounds = 0
while rounds < 3:
        dice1 = random.randint(1, 6)
        dice2 = random.randint(1, 6)
        dice3 = random.randint(1, 6)
        dice4 = random.randint(1, 6)
        dice5 = random.randint(1, 6)
        dice6 = random.randint(1, 6)
        print(dice1, dice2, dice3, dice4, dice5, dice6)
        rounds += 1

1 5 5 4 1 3
5 4 2 5 2 5
4 4 2 4 1 4