diff --git a/library/Osmocom_Types.ttcn b/library/Osmocom_Types.ttcn
index 994a0cc..2ee3215 100644
--- a/library/Osmocom_Types.ttcn
+++ b/library/Osmocom_Types.ttcn
@@ -198,5 +198,54 @@
 	}
 }
 
+/* like L1SAP_IS_PACKET_RACH */
+function ra_is_ps(OCT1 ra) return boolean {
+	if ((ra and4b 'F0'O == '70'O) and (ra and4b '0F'O != '0F'O)) {
+		return true;
+	}
+	return false;
+}
+
+function ra_is_emerg(OCT1 ra) return boolean {
+	/* See also: 3GPP TS 04.08, Table 9.9, ra=101xxxxx */
+	if ((ra and4b 'E0'O == 'A0'O) and (ra and4b '1F'O != '1F'O)) {
+		return true;
+	}
+	return false;
+}
+
+/* generate a random RACH for circuit-switched */
+function f_rnd_ra_cs() return OCT1 {
+	var OCT1 ra;
+	do {
+		ra := f_rnd_octstring(1);
+	} while (ra_is_ps(ra));
+	return ra;
+}
+
+/* generate a random RACH for emergency */
+function f_rnd_ra_emerg() return OCT1 {
+	var OCT1 ra;
+	do {
+		ra := f_rnd_octstring(1);
+	} while (not ra_is_emerg(ra));
+	return ra;
+}
+
+/* generate a random RACH for packet-switched */
+function f_rnd_ra_ps() return OCT1 {
+	var OCT1 ra;
+	do {
+		ra := f_rnd_octstring(1);
+	} while (not ra_is_ps(ra));
+	return ra;
+}
+
+/* generate a random 11-bit RA (packet-switched only) */
+function f_rnd_ra11_ps() return BIT11 {
+	var integer ra11 := f_rnd_int(bit2int('11111111111'B));
+	return int2bit(ra11, 11);
+}
+
 
 } with { encode "RAW"; variant "FIELDORDER(msb)" }
