Python Forum
same number everytime when using random.randint
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
same number everytime when using random.randint
#3
(Aug-23-2019, 03:31 AM)summeringpainting Wrote: Every time I run this the random number to print out win is 3. Any help with this would be greatly appreciated!

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while "luck" != "loto":
    if loto > 0 and loto < 3:
        print("closey")
        luck = random.randint(1, 3)
        loto = (int(input("Pick a number from 1 to 3: ")))
    elif loto <= 0 or loto > 3:
        print("Not closey")
        luck = random.randint(1, 3)
        loto = (int(input("NOOOOOPick a number from 1 to 3: ")))
    else:
        for i in range(8):
            print("WIN" * 10)
        break

Hi!

In line 7, you compare two strings: "luck" and "loto", that is to say, you are comparing 2 different words, so you are saying if they are different, which they always will be, then you have to choose from the other options down.

Therefore, in line 8, you are saying if the value of the number introduced by the user (here you asked to check the value of the number, and not checking for words as before) is 1 or 2, the program will always say the message "closey".

In line 12, you exclude numbers less or equal than 0, and numbers bigger than 3.

Therefore, the only number left, else (line 16) is 3, so 3 always gives you WINWINWIN...
even if as in Malt's output, the number ramdonly chosen in the variable named luck, is 1.

(Aug-23-2019, 04:51 AM)Malt Wrote: I have got 1 as random number

Output:
hi 1 Pick a number from 1 to 3: 2 closey Pick a number from 1 to 3: 9 Not closey NOOOOOPick a number from 1 to 3: 3 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN Process finished with exit code 0

I just made some modifications to your program, and it seems to work just fine now. Notice that I put out of the loop, the option else, because it gave always WIN to 3. Now while the value of the variable luck is different to the variable loto, you have the loop, otherwise (else), it means that the two variables are equal and therefore you win:

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while luck != loto:
    if loto > 0 and loto < 3:
        print("closey")
        luck = random.randint(1, 3)
        loto = (int(input("Pick a number from 1 to 3: ")))
    elif loto <= 0 or loto > 3:
        print("Not closey")
        luck = random.randint(1, 3)
        loto = (int(input("NOOOOOPick a number from 1 to 3: ")))
else:
    for i in range(8):
        print("WIN" * 10)

Oops!

While checking some outputs, and reviewing the program, I have noticed there are still some bugs:

Output:
hi 2 Pick a number from 1 to 3: 2 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 1 Pick a number from 1 to 3: 1 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 3 Pick a number from 1 to 3: 3 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 2 Pick a number from 1 to 3: 1 closey Pick a number from 1 to 3: 9 Not closey NOOOOOPick a number from 1 to 3: 3
In your original program:

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while "luck" != "loto":
    if loto > 0 and loto < 3:
        print("closey")
        luck = random.randint(1, 3)
        loto = (int(input("Pick a number from 1 to 3: ")))
    elif loto <= 0 or loto > 3:
        print("Not closey")
        luck = random.randint(1, 3)
        loto = (int(input("NOOOOOPick a number from 1 to 3: ")))
    else:
        for i in range(8):
            print("WIN" * 10)
        break
inside the loop, in lines 10 and 14, you have made the program to generate another random number, substituting the original one, which I think it's not the point of the game. Once a number has randomly been generated, at the beginning of the program, you should keep it until it has been correctly guessed.

My bad at quickly having a go at changing the program without having checked it properly.

In line 8 of your original program, being the values different, the number introduced could have been 1, 2 or 3, not only 1 or 2, as your line 8 implies.

So I have made some changes again:
import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while luck != loto:
    if loto > 0 and loto < 4:
        print("closey")
        loto = (int(input("Pick a number from 1 to 3: ")))
    elif loto <= 0 or loto > 3:
        print("Not closey")
        loto = (int(input("NOOOOO! Pick a number from 1 to 3: ")))
else:
    for i in range(8):
        print("WIN" * 10)
I hope not to have left any more bugs with my sleepy head...
By the way, I guess you are just practising and seeing what your code does, because otherwise, I wouldn't find very interesting a guessing-a-number game, knowing it from the beginning. I mean, you can store the number generated by the program without printing it on the screen. That is to say, I would delete the line
print(luck)
from the real game. Also, keep in mind that, as the program generates a random number among 1, 2 and 3, it's quite probably that the same number could be generated repeated times (laws of probability)!!!

I enclosed some inputs and outputs from running the program included in this answer:

Output:
hi 2 Pick a number from 1 to 3: 2 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 2 Pick a number from 1 to 3: 3 closey Pick a number from 1 to 3: 1 closey Pick a number from 1 to 3: 9 Not closey NOOOOO! Pick a number from 1 to 3: 2 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 1 Pick a number from 1 to 3: 1 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 1 Pick a number from 1 to 3: 0 Not closey NOOOOO! Pick a number from 1 to 3: 1 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
Output:
hi 3 Pick a number from 1 to 3: 3 WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN WINWINWINWINWINWINWINWINWINWIN
I wish it helps.
newbieAuggie2019

"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs
Reply


Messages In This Thread
RE: same number everytime when using random.randint - by newbieAuggie2019 - Aug-23-2019, 08:30 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  random numbers, randint janeik 2 599 Nov-27-2023, 05:17 PM
Last Post: janeik
  Unexpected output while using random.randint with def terickson2367 1 557 Oct-24-2023, 05:56 AM
Last Post: buran
  find random numbers that are = to the first 2 number of a list. Frankduc 23 3,346 Apr-05-2023, 07:36 PM
Last Post: Frankduc
  matrix number assignement to the random indices juniorcoder 4 1,984 Feb-19-2022, 02:18 PM
Last Post: juniorcoder
Sad Iterate randint() multiple times when calling a function Jake123 2 2,112 Feb-15-2022, 10:56 PM
Last Post: deanhystad
  Generate random hex number ZYSIA 1 11,781 Jul-16-2021, 09:21 AM
Last Post: DeaD_EyE
  Using Dictionary to Test Evenness of Distribution Generated by Randint Function new_coder_231013 6 3,354 Feb-23-2021, 01:29 PM
Last Post: new_coder_231013
  Random Number Repeating Tzenesh 5 4,099 Jan-13-2021, 10:00 PM
Last Post: deanhystad
  Random number generator charlottelol 5 3,285 Nov-10-2020, 10:51 PM
Last Post: deanhystad
  Help with a random.randint choice in Python booponion 5 2,856 Oct-23-2020, 05:13 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020