Fast sampling and update of weighted items? (data structure like red-black trees?)
loicfevrier: Red-black trees are far too complex for this simple task : 
just use any binary balanced tree so that the maximum height is O(log n). (red-black trees will work but take any one you want, red-black tree are slow)
On each node you store two numbers : 
- sum of the weights at the left
- sum of the weights at the right
Want you want to choose an item just explore the tree and for each node choose left or right according to the two weights.
==> O(log n)
If you update an item you'll need to update all the weight up to the root of the tree.
==> O(log n) for each update