actions have a property called _is_reget_item, it is set to true on the following items:

Mushroom mid mushroom max mushroom honey syrup maple syrup royal syrup pick me up cleansing juice party cleanse tadpola cola frogleg cola finless cola croaka cola bracer energizer party bracer party energizer yoshi-ade red essence yoshi cookie (sounds weird but i’ll explain later) yoshi candy thropher cookie pure water sleepy bomb poison mushroom fright bomb fire bomb ice bomb rock candy poison mushroom

this property is only used in a function called Battle_BattleSkillCalc__item_lost, which includes this code:

if (((pBVar4->fields)._is_reget_item != false) &&
     ((((__this->fields)._acter)->fields)._is_player != false)) {
    if ((pBVar4->fields)._skill_id != 0x95) { // here's where it excludes yoshi cookie
      iVar2 = UnityEngine_Random__Range(0,3,(MethodInfo *)0x0); // UnityEngine_Random__Range is approximately uniform, and uses an exclusive max. Therefore this can return 0, 1, or 2
      if (iVar2 == 0) {
        pBVar5 = (Battle_BattleManager_TypeInfo->static_fields->_instance->fields).
                 _current_skill_result;
        (pBVar5->fields)._special_result = (pBVar5->fields)._special_result | 1;
        return; // exit without using the item
      }
    __this_00 = GlobalWork__get_inst((MethodInfo *)0x0);
    __this_01 = GlobalWork__get_item_manager(__this_00,(MethodInfo *)0x0);
    ItemManager__use(__this_01,(((__this->fields)._skill_obj)->fields)._item_id,1,(MethodInfo *)0x0) // subtracts 1 of the item ID from your inventory. never reached if random result was 0
  }

Battle_SkillExecter__exec_koudou_kouka changes _special_result for some item koudou kouka IDs, but it’s always a | operation with a number higher than 4, I think that the lowest bit (1) indicates that it’s a freebie.

could not find any further code that applies additional probability operations to the value of _special_result

working conclusion: all freebies are 1/3