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
#6
(Aug-23-2019, 08:30 AM)newbieAuggie2019 Wrote:
(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.

Well explained!! Smash
Reply


Messages In This Thread
RE: same number everytime when using random.randint - by Malt - Aug-23-2019, 11:01 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  random numbers, randint janeik 2 559 Nov-27-2023, 05:17 PM
Last Post: janeik
  Unexpected output while using random.randint with def terickson2367 1 504 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,173 Apr-05-2023, 07:36 PM
Last Post: Frankduc
  matrix number assignement to the random indices juniorcoder 4 1,912 Feb-19-2022, 02:18 PM
Last Post: juniorcoder
Sad Iterate randint() multiple times when calling a function Jake123 2 2,033 Feb-15-2022, 10:56 PM
Last Post: deanhystad
  Generate random hex number ZYSIA 1 11,493 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,245 Feb-23-2021, 01:29 PM
Last Post: new_coder_231013
  Random Number Repeating Tzenesh 5 4,004 Jan-13-2021, 10:00 PM
Last Post: deanhystad
  Random number generator charlottelol 5 3,179 Nov-10-2020, 10:51 PM
Last Post: deanhystad
  Help with a random.randint choice in Python booponion 5 2,765 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