Feature: Add "random" rank in the group for DataFrame.rank and similar functions.
Feature: Add "random" rank in the group for DataFrame.rank and similar functions.


> DataFrame.rank(self, axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)[source]
> 
> method : {‘average’, ‘min’, ‘max’, ‘first’, ‘dense’, **‘random’**}, default ‘average’
> 
> How to rank the group of records that have the same value (i.e. ties):
> 
>   - average: average rank of the group
>   - min: lowest rank in the group
>   - max: highest rank in the group
>   - first: ranks assigned in order they appear in the array
>   - dense: like ‘min’, but rank always increases by 1 between groups
>   - **random: ranks assigned randomly (between min and max), but each value is picked only once**


#### Code Sample, a copy-pastable example if possible

```python
import numpy as np
import pandas as pd
df = pd.DataFrame([1, 2, 1, 3, 3, 2, 1, 3], index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

In [10]: df
Out[10]:
   0
a  1
b  2
c  1
d  3
e  3
f  2
g  1
h  3

# Example run 1
In [11]: df.rank(method='random')
Out[11]:
   0
a  3
b  4
c  1
d  8
e  6
f  5
g  2
h  7

# Example run 2
In [12]: df.rank(method='random')
Out[12]:
   0
a  2
b  5
c  1
d  7
e  8
f  4
g  3
h  6
```

It would be nice if it could be implemented in pandas as I have huge dataframes (100G) for which I need this feature.

In the worst case, is there a way to do something like this with multiple pandas commands?

A slightly related issue: https://github.com/pandas-dev/pandas/issues/9481