Python Forum

Full Version: output a list of random numbers 'x' columns wide
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,
I am new to programming and learning python.
I want to generate a list of random numbers and print them in a table of a specified number (say 10) columns. For example say fifty random numbers in a table of 10 columns and 5 rows
This is what I tried -

import random
ran_dom = 0
def gen_ran():
    ran_dom = round(random.random(), 5)
    print(ran_dom, end="\t")

resp = int(input("How many randoms you want to generate :"))

for i in range(resp):
    x = 0
    for x in range(10):
        gen_ran()
    print("\r")
If I want 50 randoms, the output is a table of 10 columns and 50 rows.

Awaiting suggestions from you people.
Regards,
Aditya Pratap V.
(Jan-13-2020, 11:07 AM)adityavpratap Wrote: [ -> ]Hi, I am new to programming and learning python. I want to generate a list of random numbers and print them in a table of a specified number (say 10) columns. For example say fifty random numbers in a table of 10 columns and 5 rows This is what I tried -
 import random ran_dom = 0 def gen_ran(): ran_dom = round(random.random(), 5) print(ran_dom, end="\t") resp = int(input("How many randoms you want to generate :")) for i in range(resp): x = 0 for x in range(10): gen_ran() print("\r") 
If I want 50 randoms, the output is a table of 10 columns and 50 rows. Awaiting suggestions from you people. Regards, Aditya Pratap V.

Solved!

The following code works to satisfaction -
import random
ran_dom = 0
def gen_ran():
    ran_dom = round(random.random(), 5)
    print(ran_dom, end="\t")

resp = int(input("How many randoms you want to generate :"))

for i in range(resp):
    if i % 10 == 0:
        print("\r")
    gen_ran()
print("\n")
If you need to do any actual work with data then printing is not that useful.

More common would be to built data structure and print it out if needed:

>>> import random
>>> table = [[random.random() for j in range(10)] for i in range(50)]    # will create 2D matrix 50 rows with 10 elements
>>> for row in table: 
...     print(*row, sep=' ')                                             # will print row by row, row values separated by space


If work is getting more serious then numpy has built-in method:

>>> import numpy as np
>>> np.random.rand(50,10)
(Jan-13-2020, 02:52 PM)perfringo Wrote: [ -> ]If you need to do any actual work with data then printing is not that useful.

More common would be to built data structure and print it out if needed:

>>> import random
>>> table = [[random.random() for j in range(10)] for i in range(50)]    # will create 2D matrix 50 rows with 10 elements
>>> for row in table: 
...     print(*row, sep=' ')                                             # will print row by row, row values separated by space


If work is getting more serious then numpy has built-in method:

>>> import numpy as np
>>> np.random.rand(50,10)
Thanks for helping. Seems to be a nice way to create a 2D table. Where can I read more about it?
Regards,
(Jan-13-2020, 05:18 PM)adityavpratap Wrote: [ -> ]Seems to be a nice way to create a 2D table. Where can I read more about it?

Documentation on python.org: list comprhensions (note Nested List Comprehensions)