diff --git a/libraries/stdlib/api/js-v1/kotlin.ranges.kt b/libraries/stdlib/api/js-v1/kotlin.ranges.kt
index d10b663..e2a29b5 100644
--- a/libraries/stdlib/api/js-v1/kotlin.ranges.kt
+++ b/libraries/stdlib/api/js-v1/kotlin.ranges.kt
@@ -402,12 +402,10 @@
 public fun kotlin.ranges.ULongRange.random(random: kotlin.random.Random): kotlin.ULong
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.CharProgression.randomOrNull(): kotlin.Char?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.CharProgression.randomOrNull(random: kotlin.random.Random): kotlin.Char?
 
 @kotlin.SinceKotlin(version = "1.4")
@@ -420,12 +418,10 @@
 public fun kotlin.ranges.CharRange.randomOrNull(random: kotlin.random.Random): kotlin.Char?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.IntProgression.randomOrNull(): kotlin.Int?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.IntProgression.randomOrNull(random: kotlin.random.Random): kotlin.Int?
 
 @kotlin.SinceKotlin(version = "1.4")
@@ -438,12 +434,10 @@
 public fun kotlin.ranges.IntRange.randomOrNull(random: kotlin.random.Random): kotlin.Int?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.LongProgression.randomOrNull(): kotlin.Long?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.LongProgression.randomOrNull(random: kotlin.random.Random): kotlin.Long?
 
 @kotlin.SinceKotlin(version = "1.4")
@@ -456,12 +450,10 @@
 public fun kotlin.ranges.LongRange.randomOrNull(random: kotlin.random.Random): kotlin.Long?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.UIntProgression.randomOrNull(): kotlin.UInt?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.UIntProgression.randomOrNull(random: kotlin.random.Random): kotlin.UInt?
 
 @kotlin.SinceKotlin(version = "1.5")
@@ -474,12 +466,10 @@
 public fun kotlin.ranges.UIntRange.randomOrNull(random: kotlin.random.Random): kotlin.UInt?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.ULongProgression.randomOrNull(): kotlin.ULong?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.ULongProgression.randomOrNull(random: kotlin.random.Random): kotlin.ULong?
 
 @kotlin.SinceKotlin(version = "1.5")
diff --git a/libraries/stdlib/api/js/kotlin.ranges.kt b/libraries/stdlib/api/js/kotlin.ranges.kt
index 4d98862..a256903 100644
--- a/libraries/stdlib/api/js/kotlin.ranges.kt
+++ b/libraries/stdlib/api/js/kotlin.ranges.kt
@@ -402,12 +402,10 @@
 public fun kotlin.ranges.ULongRange.random(random: kotlin.random.Random): kotlin.ULong
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.CharProgression.randomOrNull(): kotlin.Char?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.CharProgression.randomOrNull(random: kotlin.random.Random): kotlin.Char?
 
 @kotlin.SinceKotlin(version = "1.4")
@@ -420,12 +418,10 @@
 public fun kotlin.ranges.CharRange.randomOrNull(random: kotlin.random.Random): kotlin.Char?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.IntProgression.randomOrNull(): kotlin.Int?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.IntProgression.randomOrNull(random: kotlin.random.Random): kotlin.Int?
 
 @kotlin.SinceKotlin(version = "1.4")
@@ -438,12 +434,10 @@
 public fun kotlin.ranges.IntRange.randomOrNull(random: kotlin.random.Random): kotlin.Int?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.LongProgression.randomOrNull(): kotlin.Long?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.LongProgression.randomOrNull(random: kotlin.random.Random): kotlin.Long?
 
 @kotlin.SinceKotlin(version = "1.4")
@@ -456,12 +450,10 @@
 public fun kotlin.ranges.LongRange.randomOrNull(random: kotlin.random.Random): kotlin.Long?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.UIntProgression.randomOrNull(): kotlin.UInt?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.UIntProgression.randomOrNull(random: kotlin.random.Random): kotlin.UInt?
 
 @kotlin.SinceKotlin(version = "1.5")
@@ -474,12 +466,10 @@
 public fun kotlin.ranges.UIntRange.randomOrNull(random: kotlin.random.Random): kotlin.UInt?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 @kotlin.internal.InlineOnly
 public inline fun kotlin.ranges.ULongProgression.randomOrNull(): kotlin.ULong?
 
 @kotlin.SinceKotlin(version = "1.6")
-@kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class})
 public fun kotlin.ranges.ULongProgression.randomOrNull(random: kotlin.random.Random): kotlin.ULong?
 
 @kotlin.SinceKotlin(version = "1.5")
diff --git a/libraries/stdlib/common/src/generated/_Ranges.kt b/libraries/stdlib/common/src/generated/_Ranges.kt
index 6f9b28b..e2aae2e 100644
--- a/libraries/stdlib/common/src/generated/_Ranges.kt
+++ b/libraries/stdlib/common/src/generated/_Ranges.kt
@@ -204,7 +204,6 @@
  * Returns a random element from this progression, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 @kotlin.internal.InlineOnly
 public inline fun IntProgression.randomOrNull(): Int? {
     return randomOrNull(Random)
@@ -214,7 +213,6 @@
  * Returns a random element from this progression, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 @kotlin.internal.InlineOnly
 public inline fun LongProgression.randomOrNull(): Long? {
     return randomOrNull(Random)
@@ -224,7 +222,6 @@
  * Returns a random element from this progression, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 @kotlin.internal.InlineOnly
 public inline fun CharProgression.randomOrNull(): Char? {
     return randomOrNull(Random)
@@ -267,7 +264,6 @@
  * Returns a random element from this progression using the specified source of randomness, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 public fun IntProgression.randomOrNull(random: Random): Int? {
     if (isEmpty())
         return null
@@ -282,7 +278,6 @@
  * Returns a random element from this progression using the specified source of randomness, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 public fun LongProgression.randomOrNull(random: Random): Long? {
     if (isEmpty())
         return null
@@ -297,7 +292,6 @@
  * Returns a random element from this progression using the specified source of randomness, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 public fun CharProgression.randomOrNull(random: Random): Char? {
     if (isEmpty())
         return null
diff --git a/libraries/stdlib/common/src/generated/_URanges.kt b/libraries/stdlib/common/src/generated/_URanges.kt
index 9ed38ea..9a5a5a8 100644
--- a/libraries/stdlib/common/src/generated/_URanges.kt
+++ b/libraries/stdlib/common/src/generated/_URanges.kt
@@ -147,7 +147,6 @@
  * Returns a random element from this progression, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 @kotlin.internal.InlineOnly
 public inline fun UIntProgression.randomOrNull(): UInt? {
     return randomOrNull(Random)
@@ -157,7 +156,6 @@
  * Returns a random element from this progression, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 @kotlin.internal.InlineOnly
 public inline fun ULongProgression.randomOrNull(): ULong? {
     return randomOrNull(Random)
@@ -189,7 +187,6 @@
  * Returns a random element from this progression using the specified source of randomness, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 public fun UIntProgression.randomOrNull(random: Random): UInt? {
     if (isEmpty())
         return null
@@ -204,7 +201,6 @@
  * Returns a random element from this progression using the specified source of randomness, or `null` if this progression is empty.
  */
 @SinceKotlin("1.6")
-@WasExperimental(ExperimentalStdlibApi::class)
 public fun ULongProgression.randomOrNull(random: Random): ULong? {
     if (isEmpty())
         return null
diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Elements.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Elements.kt
index 29c97ad..6ba90d9 100644
--- a/libraries/tools/kotlin-stdlib-gen/src/templates/Elements.kt
+++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Elements.kt
@@ -962,6 +962,7 @@
         }
         specialFor(ProgressionsOfPrimitives) {
             since("1.6")
+            wasExperimentalAnnotations -= "ExperimentalStdlibApi"
         }
     }
 
@@ -1102,6 +1103,7 @@
         }
         specialFor(ProgressionsOfPrimitives) {
             since("1.6")
+            wasExperimentalAnnotations -= "ExperimentalStdlibApi"
             body {
                 """
                 if (isEmpty())
