1. No Profile Picture
Contributing User
Devshed Newbie (0 - 499 posts)

Join Date
Apr 2004
Posts
57
Rep Power
15

#### Pyhton Loop

Hi
I am new to python infact programming. I am trying to write a programme which will pick 6 random numbers between 1 to 50 but no duplicate numbers and not using append function.

Here is something i wrote

import sys
import random
array=[]
#array=[55,65,1,89,10,54,1,258,2]
for i in range(5):

# storing Random numbers to an array
temp= random.randrange(1,50)
array+=[temp]
#print array

# random number(1-49) Validation (pick 6 different numbers) i #am stuck here
if temp == array[i]:
temp =random.randrange(1,50)
array+=[temp]

#Bubble sort(Ascending order)
for y in range(len(array)-1,0,-1):
for x in range(y):
if array[x]> array[x+1]:
array[x],array[x+1]=array[x+1],array[x]

# Displaying Random numbers in order (working)
for v in array:
print v,

Can someone help
Thanks
Luckyboy
2. No Profile Picture
Contributing User
Devshed Newbie (0 - 499 posts)

Join Date
Apr 2004
Posts
57
Rep Power
15
Originally Posted by luckyboy
Hi
I am new to python infact programming. I am trying to write a programme which will pick 6 random numbers between 1 to 50 but no duplicate numbers and not using append function.

Here is something i wrote

import sys
import random
array=[]
#array=[55,65,1,89,10,54,1,258,2]
for i in range(5):

# storing Random numbers to an array
temp= random.randrange(1,50)
array+=[temp]
#print array

# random number(1-49) Validation (pick 6 different numbers) i #am stuck here
if temp == array[i]:
temp =random.randrange(1,50)
array+=[temp]

#Bubble sort(Ascending order)
for y in range(len(array)-1,0,-1):
for x in range(y):
if array[x]> array[x+1]:
array[x],array[x+1]=array[x+1],array[x]

# Displaying Random numbers in order (working)
for v in array:
print v,

Can someone help
Thanks
Luckyboy
3. No Profile Picture
Contributing User
Devshed Newbie (0 - 499 posts)

Join Date
Dec 2001
Location
Houston, TX
Posts
383
Rep Power
17
Here's how I would do it, though I don't understand the restriction on not using .append()..

Code:
```import random

picked_numbers = []

for i in range(6):
newnum = random.randrange(1,50)
while newnum in picked_numbers:
newnum = random.randrange(1,50)
picked_numbers += [newnum]

for num in picked_numbers:
print num,```
Code:
`picked_numbers += [newnum]`
you'd just do
Code:
`picked_numbers.append(newnum)`
as it's more efficient.
4. No Profile Picture
Contributing User
Devshed Newbie (0 - 499 posts)

Join Date
Apr 2004
Posts
57
Rep Power
15

#### Python loop

Hi it's working
Thank you strike
5. No Profile Picture
Contributing User
Devshed Intermediate (1500 - 1999 posts)

Join Date
Feb 2004
Location
London, England
Posts
1,585
Rep Power
1377
This problem is discussed at length in the book 'Programming Pearls' by Jon Bentley, which I recommend that anyone who is serious about programming should read.

Here is an alternative way. Create a list with the numbers 1-50 in it, shuffle it, and gets the first six elements

Code:
```>>> import random
>>> numbers = range(1, 51)
>>> random.shuffle(numbers)
>>> numbers[:6]
[48, 16, 4, 40, 35, 9]```
This is fine for a small list of 50, but if you wanted a random number from the set of 1..1,000,000,000, then it would create an array with a billion elements, and throw away a billion minus six of them. In that case I would go to the book I mentioned and use an alternative algorithm.

Dave - The Developers' Coach