+ 2
Can anyone please explain why the features appear RANDOMLY without even using libraries?
11 Antworten
+ 1
That's because of using set.
def unique_values(attribute):
return list(set(attribute))
The python Set's order of elements is undefined. Set is defined by use of hashing.. so it does not guarantee, the way elements are added..
Ex:
see
print(set({1,2,'a','b',3}))
this output is may different each time.
+ 1
what are “features”? what is supposed to happen? since there is no error message, please clarify what is going wrong.
+ 1
The problem is that the list named features appears its elements RANDOMLY and I didn't even use a library or a module for random. Just run the program 3-6 times and you'll see the difference.
+ 1
ah, i see. this likely has to do with memory allocation in list conversion. i do not know for sure as the code looks rather complex
+ 1
Thank you. Also I'll check if I can make my code less complex.
+ 1
For dice, i think you can get same result because you use only numbers (same types) so may result same. Some times it may depend on values you added. So not fully useful..
list1 = [1,2,3] set(list1) #creates set([1, 2, 3])
list2 = [3,2,1] set(list2) # set([1, 2, 3])
Hope it helps ...
You're welcome..
+ 1
that last post had code that is not broken up properly! it should be...
list1 = [1, 2, 3]
set(list1) #will be set([1, 2, 3])
but anyway, in terms of making dice using the memory access system sets, I strongly disrecommend this. It could be very confusing, and the continuous memory change of creating new sets to create re-randomized order would eventually be speed-killing. in the end, even though the random module takes up more ram than a set, it would actually cause less ram activity.
+ 1
Wait, I thought the random module is using the system time, but if that's true, then I can make random methods in other (lower level) programming languages.(The Greek programming language "ΓΛΏΣΣΑ" for example).
+ 1
that’s a bit of a separate question, but I’ll go ahead and give you a preview. Yes, the random module does use the system time, and you can probably implement the formula in whatever language. the python built-in random module, like other random modules, uses a formula to generate a sequence of non-repeating numbers given a starting seed. in other languages, a random module sometimes does not draw on the system clock by default, and the seed always defaults to zero. thus, as the random sequence starts out, it will always generate the same numbers from its start, but the sequence continues indefinitely without repeating. using the system clock is a way to get an actual random seed each time, since the user will start the program at an arbitrary moment. as a book put it, “don’t use the built-in random module if you’re planning on starting an online casino. if you really need random numbers, you can go to idontrememberthewebsite.org, which delivers numbers based on the truly random process of radioactive decay.“
0
Okay, that's useful. At least I can make some kind of dice without using a single library or a module.
0
Thank you. Also I think you're talking about the random.org.