As what I would consider to be a successful newbie, "changing values randomly" only works with "controlled randomness".
I could not make much progress in Megaman Legends romhacking, if I searched single bytes. 56k matches.
However, it is successful when deployed in the following scenarios:
1) Using a real debugger, to trace a function to a location in ram, and copying the entire 16 byte line it sits on to search the rom for. I find plenty of values, even values referenced in 2 separate locations within the same rom, by searching longer strings in what appears to be a part of ram loaded from game start or that's always actively loaded.
2) Finding a location in ram/rom, and then searching for similar value bytes in the nearby neighborhood. For instance, I can change what item is given AND which is equipped, by searching a location I found, and checking for any similar values located fairly close in proximity. However, recently, I found 7 references of a equipment byte, and changing all of them severely broke the character and crashed the game, but changing JUST THE 1 THAT WAS POINTED TO, worked fine. So sometimes precision is better than carpetbomb-swapping.
As far as platform-specific tips, I only know what I've read and have no hands-on experience. However, I started from knowing literally nothing about assembly, to knowing still almost nothing about assembly, and I can literally build an item randomizer now, so there's always hope. Just focus on finding debug-tracing and the tools/emulator to use for the task, and study all the documentation you can about the tools and/or the various games people have used the tools on. When you need assembly, you'll need a lot less of it than you probably think.