Prefab Random Brush doesn't seem very random

I have created several sprites and attached them to several prefabs with various other components so I can have collisions and trigger-able scripts.

I have about 20 prefabs that represent grass
I have 9 prefabs that represent flowers
I have 3 prefabs that represent weeds

I have assigned all 32 of these prefabs to a random prefab brush and when I paint with that prefab brush from the tile palette, it seems very … nonrandom. Sure, they mix up between the 3 types of prefabs, but within those groups, its the same exact tile. So for example, out of 9 flowers, its the same flower that is always used, out of the weeds, it the same weed tile. I tried to mess with the Perlin Scale, but that doesn’t seem to show any sort of difference in how often a tile is used. I couldn’t seem to find this specific question asked in Google.

Am I overlooking something, or misunderstanding how the Prefab Random Brush works?

@Skeletim The default random prefab brush uses perlin noise to select which prefab to choose in the list. This is perfect when tiling prefabs, as there will be clusters and it will look more appealing. I you want truly random selection, you can edit the brush Paint() method to use UnityEngine.Random() to get its prefab index (commented the perlin method):

        public override void Paint(GridLayout grid, GameObject brushTarget, Vector3Int position)
        {
            // Do not allow editing palettes
            if (brushTarget.layer == 31 || brushTarget == null)
            {
                return;
            }

            var objectsInCell = GetObjectsInCell(grid, brushTarget.transform, position);
            var existPrefabObjectInCell = objectsInCell.Any(objectInCell =>
            {
                return m_Prefabs.Any(prefab => PrefabUtility.GetCorrespondingObjectFromSource(objectInCell) == prefab);
            });

            if (!existPrefabObjectInCell)
            {
                //var index = Mathf.Clamp(Mathf.FloorToInt(GetPerlinValue(position, m_PerlinScale, k_PerlinOffset) * m_Prefabs.Length), 0, m_Prefabs.Length - 1);
                var index = Random.Range(0, m_Prefabs.Length); //True randomness
                var prefab = m_Prefabs[index];
                base.InstantiatePrefabInCell(grid, brushTarget, position, prefab);
            }
        }

To edit the brush, select it in the project window, then in the inspector click on the top-right gear → Edit Script.