One thing that is wrong for sure is your call to random(). The min and max are inclusive, so the max should be 255, not 256.
That is WRONG. The min value is inclusive. The max value is NOT. So, the OP's code IS correct.
how do I stop this and make a new byte received break out of that while loop?
You deleted the while loop, you said. So, there is no while loop to break out of.
Your nested for loops, containing delay(), have blinders on. NOTHING else happens while the outer loop is executing.
You could see if there is serial data to read, in the inner loop, and return if there is.
Or, you could realize that executing a for loop in the loop() function is silly, and stop doing that.