* Generally, I'd rather see one `before` hook with 3 lines than 3 before hooks.
* The `allow(Random).to receive(:srand).and_call_original` bit is puzzling to me: why are you stubbing the object-under-test in order to make it's `srand` method do what it would have done originally?
* It seems odd to both `allow(Kernel).to receive(:srand)` and `expect` it -- you usually only need one of those.
* I consider it a code smell to use a mock expectation in a `before` hook: if it's so important that the message is received that you want the example to fail if it's not, then the mock expectation should be front-and-center in the example and not buried in a `before`.

I think these examples could be greatly simplified:

``` ruby
describe '.srand' do
  it 'invokes Kernel.srand with the specified seed' do
    expect(Kernel).to receive(:srand).with(123)
    Random.srand(123)
  end

  it 'uses a seed of 0 if none is given' do
    expect(Kernel).to receive(:srand).with(0)
    Random.srand
  end
end
```

In general, I favor sticking to the basic constructs (`describe`/`it`) and only reaching for things like `before`, `let`, etc when the tests really need it...and they often don't.