set seed 12345
gen random=runiform()
sort random
gen validation=_n<=450 //assume you sample size is 900
label define valid 1 "model_build" 0 "model_valid"
label val validation valid
Your method may be Ok but it's not a standard procedure, especially the use of "rnormal()". Personally I have never seen Stata experts use "rnormal()" instead of "runiform()" for the aim of random sampling.
As regards to splitting the Stata file, there are several methods, the simplest one is to find and install the command "savesome"