A weighted version of random.choice

Since version 1.7.0, NumPy has a choice function that supports probability distributions. from numpy.random import choice draw = choice(list_of_candidates, number_of_items_to_pick, p=probability_distribution) Note that probability_distribution is a sequence in the same order of list_of_candidates. You can also use the keyword replace=False to change the behavior so that drawn items are not replaced.

How to see which plugins are making Vim slow?

You can use built-in profiling support: after launching vim do :profile start profile.log :profile func * :profile file * ” At this point do slow actions :profile pause :noautocmd qall! (unlike quitting noautocmd is not really required, it just makes vim quit faster). Note: you won’t get information about functions there were deleted before vim … Read more

Fastest way to list all primes below N

Warning: timeit results may vary due to differences in hardware or version of Python. Below is a script which compares a number of implementations: ambi_sieve_plain, rwh_primes, rwh_primes1, rwh_primes2, sieveOfAtkin, sieveOfEratosthenes, sundaram3, sieve_wheel_30, ambi_sieve (requires numpy) primesfrom3to (requires numpy) primesfrom2to (requires numpy) Many thanks to stephan for bringing sieve_wheel_30 to my attention. Credit goes to Robert … Read more

Why does the order of the loops affect performance when iterating over a 2D array?

As others have said, the issue is the store to the memory location in the array: x[i][j]. Here’s a bit of insight why: You have a 2-dimensional array, but memory in the computer is inherently 1-dimensional. So while you imagine your array like this: 0,0 | 0,1 | 0,2 | 0,3 —-+—–+—–+—- 1,0 | 1,1 … Read more

Which is better option to use for dividing an integer number by 2?

Use the operation that best describes what you are trying to do. If you are treating the number as a sequence of bits, use bitshift. If you are treating it as a numerical value, use division. Note that they are not exactly equivalent. They can give different results for negative integers. For example: -5 / … Read more

Fastest sort of fixed length 6 int array

For any optimization, it’s always best to test, test, test. I would try at least sorting networks and insertion sort. If I were betting, I’d put my money on insertion sort based on past experience. Do you know anything about the input data? Some algorithms will perform better with certain kinds of data. For example, … Read more