Python random.uniform not generate 0 -


i want use random.uniform generate float in between [-2, 2], not generate 0, how in loop,

from random import uniform  flag = true  while flag:     if uniform(-2, 2) not 0:         flag = false 

i wondering there better way it?

cheers

this more code review, briefly:

from random import uniform  while true:     if uniform(-2, 2) != 0.0:         break 

is more pythonic / standard way (standard, in pattern occurs in other languages well).

it's rare flag variable necessary break out of (while) loop. perhaps when using double loop.

note: changed is not !=, , 0 0.0 (the latter more it's clear we're comparing float float).
because you're comparing float int, they'll never same item. besides, comparing numbers using is bad idea:

>>> 2*3 6  # may work, don't rely on true >>> 10*60 600  # doesn't work false >>> 0 0   # sure, works... true >>> 0.0 0  # doesn't: float vs int false 

of course, answer actual question if there other ways generate random numbers: dozen.

  • with list comprehension inside list comprehension*:

    [val val in [uniform(-2, 2) in range(10)] if val != 0] 
  • using numpy:

    vals = uniform(-2, 2, 10) vals = vals[vals!=0] 

* don't want call nested, since feel belongs different double list comprehension.


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -