Используя transform
и маскируя:
df['max']=df.groupby('class')['num'].transform('max')
df['min']=df.groupby('class')['num'].transform('min')
mask = df['num'].ne(df['min'])&df['num'].ne(df['max'])
df.loc[mask,:].groupby('class')['num'].describe()
count mean std min 25% 50% 75% max
class
a 3.0 15.0 3.000000 12.0 13.5 15.0 16.5 18.0
b 3.0 55.0 4.582576 51.0 52.5 54.0 57.0 60.0
Или:
df.loc[mask, ['class', 'num']].groupby('class').describe()
num
count mean std min 25% 50% 75% max
class
a 3.0 15.0 3.000000 12.0 13.5 15.0 16.5 18.0
b 3.0 55.0 4.582576 51.0 52.5 54.0 57.0 60.0
byte[] result = new byte[8];
rng.GetBytes(result);
return (double)BitConverter.ToUInt64(result,0) / ulong.MaxValue;
Можно использовать BitConverter. ToDouble (...) метод. Это берет в массиве байтов и возвратит Двойное. Thre являются соответствующими методами для большинства других типов примитивов, а также методом для движения от примитивов до массива байтов.
Используйте BitConverter для преобразования последовательности случайных байтов к Двойному:
byte[] random_bytes = new byte[8]; // BitConverter will expect an 8-byte array
new RNGCryptoServiceProvider().GetBytes(random_bytes);
double my_random_double = BitConverter.ToDouble(random_bytes, 0);